Si possono selezionare più celle Excel (contigue o no) usando la scorciatoia da tastiera Ctrl+ clic.
Come deselezioni una o più di queste celle precedentemente selezionate?
Si possono selezionare più celle Excel (contigue o no) usando la scorciatoia da tastiera Ctrl+ clic.
Come deselezioni una o più di queste celle precedentemente selezionate?
Risposte:
Utilizzando i tasti MAIUSC e / o CTRL è possibile selezionare intervalli non contigui. Tuttavia, se si seleziona una cella o un'area per errore, non esiste un modo integrato per rimuoverlo dalla selezione senza perdere l'intera selezione e ricominciare da capo. Questa pagina descrive le procedure VBA, UnSelectActiveCell e UnSelectCurrentArea che rimuoveranno la cella attiva o l'area contenente la cella attiva dalla selezione corrente. Tutte le altre celle nella selezione rimarranno selezionate.
La soluzione migliore sarebbe aggiungerli alla cartella di lavoro Macro personale in modo che siano disponibili per tutte le cartelle di lavoro aperte in Excel.
Questa procedura rimuoverà la cella attiva dalla selezione .
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
Questa procedura rimuoverà l'Area contenente la cella attiva dalla selezione.
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
deselectuna cellula. È assolutamente ridicolo! Sto selezionando ogni seconda colonna e se commetto un errore, devo ricominciare da capo? Questo è% & * ing folle!
Un modo più efficace per deselezionare più celle è descritto in questo articolo di ExtendOffice . Include un prompt aggiuntivo, ma è possibile deselezionare contemporaneamente un numero arbitrario di celle / selezioni (anziché deselezionare solo la cella o l'area attiva)
Sto postando lo script qui, con un piccolo miglioramento dell'usabilità (rimosso condizionalmente il primo prompt ridondante dal post originale):
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
Per usarlo, si effettua una selezione, invocare la DeselectCellsmacro (che è la cosa migliore per essere salvato nel vostro Personal libro macro e assegnata a un collegamento) e selezionare le celle da de selezionato nel popup che appare:
UnSelectActiveCellpiù veloce se ti unisci per intervalli e attraversi le celle solo seNot Intersect(Area,ActiveCell) Is Nothing. Potrebbe non essere il caso se laIntersectfunzione è molto più lenta dellaStrCompfunzione da non poter compensare la riduzione delle chiamate aUnion.