Jak odznaczyć komórkę Excela za pomocą skrótu klawiaturowego?


14

Można wybrać wiele komórek Excela (jednocześnie lub nie) za pomocą skrótu klawiaturowego Ctrl+ kliknięcie.

Jak odznaczyć jedną lub więcej wcześniej wybranych komórek?

Odpowiedzi:


5

Używając klawiszy SHIFT i / lub CTRL możesz wybierać niesąsiadujące zakresy. Jeśli jednak wybierzesz komórkę lub obszar przez pomyłkę, nie ma wbudowanego sposobu, aby usunąć go z zaznaczenia bez utraty całego zaznaczenia i bez konieczności rozpoczynania od nowa. Ta strona opisuje procedury VBA, UnSelectActiveCell i UnSelectCurrentArea, które usuną komórkę aktywną lub obszar zawierający komórkę aktywną z bieżącego wyboru. Wszystkie pozostałe komórki w zaznaczeniu pozostaną zaznaczone.

Najlepszym rozwiązaniem byłoby dodanie ich do skoroszytu osobistego makra, aby były dostępne dla wszystkich otwartych skoroszytów w programie Excel.

Ta procedura usunie Aktywną komórkę z zaznaczenia .

Sub UnSelectActiveCell()
    Dim R As Range
    Dim RR As Range
    For Each R In Selection.Cells
        If StrComp(R.Address, ActiveCell.Address, vbBinaryCompare) <> 0 Then
            If RR Is Nothing Then
                Set RR = R
            Else
                Set RR = Application.Union(RR, R)
            End If
        End If
    Next R
    If Not RR Is Nothing Then
        RR.Select
    End If
End Sub

Ta procedura usunie obszar zawierający aktywną komórkę z zaznaczenia.

Sub UnSelectCurrentArea()
    Dim Area As Range
    Dim RR As Range

    For Each Area In Selection.Areas
        If Application.Intersect(Area, ActiveCell) Is Nothing Then
            If RR Is Nothing Then
                Set RR = Area
            Else
                Set RR = Application.Union(RR, Area)
            End If
        End If
    Next Area
    If Not RR Is Nothing Then
        RR.Select
    End If
End Sub

1
Zastanawiam się, czy możesz UnSelectActiveCellprzyspieszyć, jeśli połączysz się według zakresów i zapętlisz komórki, jeśli Not Intersect(Area,ActiveCell) Is Nothing. Może nie być tak, jeśli Intersectfunkcja jest o wiele wolniejsza niż StrCompfunkcja, która nie może zrównoważyć redukcji wywołań Union.
Inżynier Toast

1
Bóg excel jest taki stary lol
codyc4321

Czy nadal tak jest? Nie mogę przez całe życie dowiedzieć się, jak dotrzeć do deselectkomórki. To absolutnie śmieszne! Wybieram co 2 kolumnę i jeśli popełniam błąd, muszę zacząć od nowa? To szalone% i * ing!
pookie

2

Bardziej niezawodny sposób na odznaczenie wielu komórek opisano w tym artykule ExtendOffice . Zawiera dodatkowy monit, ale możesz odznaczyć dowolną liczbę komórek / zaznaczeń jednocześnie (zamiast odznaczać tylko aktywną komórkę lub obszar)

Zamieszczam tutaj skrypt z niewielką poprawą użyteczności (warunkowo usunęłam zbędny pierwszy monit z oryginalnego postu):

Sub DeselectCells()
    Dim rng As Range
    Dim InputRng As Range
    Dim DeleteRng As Range
    Dim result As Range
    xTitleId = "Deselect Cells"

    Set InputRng = Application.Selection
    If InputRng.Count <= 1 Then
        Set InputRng = Application.InputBox("Range :", xTitleId, InputRng.Address, Type:=8)
    End If
    Set DeleteRng = Application.InputBox("Delete Range", xTitleId, Type:=8)
    For Each rng In InputRng
        If Application.Intersect(rng, DeleteRng) Is Nothing Then
            If result Is Nothing Then
                Set result = rng
            Else
                Set result = Application.Union(result, rng)
            End If
        End If
    Next
    result.Select
End Sub

Aby z niego skorzystać, należy dokonać wyboru, należy wywołać DeselectCellsmakro (co jest najlepiej być zapisane w Osobiste makro książki i przypisany do skrótu) i zaznacz komórki mają być de wybrany w okienko, które się pojawi:

Odznacz komórki


Niezłe znalezisko, świetna odpowiedź.
Burgi

1

Można teraz odznaczyć za pomocą CTRL komórkę wybraną przez pomyłkę. Jest to nowa funkcja wbudowana w Office 365 lub nowsze wersje. Wreszcie!

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.