Como desmarcar a célula do Excel usando o atalho de teclado?

14

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?

ahmednabil88
fonte

Respostas:

5

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
cara
fonte
1
Gostaria de saber se você pode fazer UnSelectActiveCellmais rápido se você se unir por intervalos e apenas percorrer as células se Not Intersect(Area,ActiveCell) Is Nothing. Pode não ser o caso se a Intersectfunção for muito mais lenta que a StrCompfunção que não pode compensar a redução nas chamadas para Union.
Engenheiro Toast
1
Deus excel é tão velho lol
codyc4321
Ainda é esse o caso? Na minha vida, não consigo descobrir como fazer deselectuma célula. É absolutamente ridículo! Estou selecionando cada segunda coluna e se eu cometer um erro, devo começar de novo? Isso é% & * ing insano!
Pookie
2

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 DeselectCellsmacro (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:

Cancelar seleção de células

Giovanni
fonte
Boa descoberta, ótima resposta.
Burgi
1

Agora é possível desmarcar com CTRL uma célula selecionada por engano. É uma nova função interna do Office 365 ou versões recentes. Finalmente!

Steve
fonte