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?
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:
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
deselect
komórki. To absolutnie śmieszne! Wybieram co 2 kolumnę i jeśli popełniam błąd, muszę zacząć od nowa? To szalone% i * ing!
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ć DeselectCells
makro (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:
UnSelectActiveCell
przyspieszyć, jeśli połączysz się według zakresów i zapętlisz komórki, jeśliNot Intersect(Area,ActiveCell) Is Nothing
. Może nie być tak, jeśliIntersect
funkcja jest o wiele wolniejsza niżStrComp
funkcja, która nie może zrównoważyć redukcji wywołańUnion
.