Pode-se selecionar várias células do Excel (contígua ou não) usando o atalho de teclado Ctrl+ Clique.
Como você desmarca uma ou mais dessas células selecionadas anteriormente?
Pode-se selecionar várias células do Excel (contígua ou não) usando o atalho de teclado Ctrl+ Clique.
Como você desmarca uma ou mais dessas células selecionadas anteriormente?
Respostas:
Usando as teclas SHIFT e / ou CTRL, você pode selecionar intervalos não contíguos. No entanto, se você selecionar uma célula ou área por engano, não haverá uma maneira integrada de remover isso da seleção sem perder a seleção inteira e ter que começar de novo. Esta página descreve os procedimentos do VBA, UnSelectActiveCell e UnSelectCurrentArea que removerão a célula ativa ou a área que contém a célula ativa da seleção atual. Todas as outras células na seleção permanecerão selecionadas.
Sua melhor aposta seria adicioná-las à sua pasta de trabalho Macro pessoal para que estejam disponíveis para todas as pastas de trabalho abertas no Excel.
Este procedimento removerá a célula ativa da seleção .
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
Este procedimento removerá a área que contém a célula ativa da seleção.
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
uma célula. É absolutamente ridículo! Estou selecionando cada segunda coluna e se eu cometer um erro, devo começar de novo? Isso é% & * ing insano!
Uma maneira mais robusta de desmarcar várias células é descrita neste artigo ExtendOffice . Ele inclui um prompt extra, mas você pode desmarcar um número arbitrário de células / seleções de uma só vez (em vez de desmarcar apenas a célula ou área ativa)
Estou postando o script aqui, com uma pequena melhoria na usabilidade (removida condicionalmente o primeiro prompt redundante da postagem original):
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
Para usá-lo, você faz uma seleção, invocar a DeselectCells
macro (que é melhor para ser salvo em seu livro de macro pessoal e atribuído a um atalho) e selecione as células a serem de selecionada no pop-up que aparece:
UnSelectActiveCell
mais rápido se você se unir por intervalos e apenas percorrer as células seNot Intersect(Area,ActiveCell) Is Nothing
. Pode não ser o caso se aIntersect
função for muito mais lenta que aStrComp
função que não pode compensar a redução nas chamadas paraUnion
.