¿Cómo deseleccionar la celda de Excel usando el método abreviado de teclado?

14

Se pueden seleccionar varias celdas de Excel (ya sea contiguamente o no) utilizando el método abreviado de teclado Ctrl+ clic.

¿Cómo anula la selección de una o más de estas celdas seleccionadas previamente?

ahmednabil88
fuente

Respuestas:

5

Al usar las teclas MAYÚS y / o CTRL, puede seleccionar rangos no contiguos. Sin embargo, si selecciona una celda o área por error, no hay una forma integrada de eliminar eso de la selección sin perder toda la selección y tener que comenzar de nuevo. Esta página describe los procedimientos de VBA, UnSelectActiveCell y UnSelectCurrentArea que eliminarán la celda activa o el área que contiene la celda activa de la selección actual. Todas las demás celdas en la Selección permanecerán seleccionadas.

Su mejor opción sería agregarlos a su libro de trabajo Macro personal para que estén disponibles para todos los libros abiertos en Excel.

Este procedimiento eliminará la celda activa de la selección .

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 procedimiento eliminará el área que contiene la celda activa de la selección.

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
tipo
fuente
1
Me pregunto si puede hacer UnSelectActiveCellmás rápido si se une por rangos y solo recorre las celdas si Not Intersect(Area,ActiveCell) Is Nothing. Puede que no sea el caso si la Intersectfunción es mucho más lenta que la StrCompfunción que no puede compensar la reducción en las llamadas a Union.
Engineer Toast
1
Dios es tan viejo lol
codyc4321
¿Sigue siendo el caso? No puedo por mi vida averiguar cómo llegar a deselectuna celda. ¡Es absolutamente ridículo! ¿Estoy seleccionando cada 2da columna y si me equivoco, debo comenzar de nuevo? Eso es% & * ing loco!
pookie
2

En este artículo de ExtendOffice se describe una forma más sólida de deseleccionar varias celdas . Incluye un mensaje adicional, pero puede anular la selección de un número arbitrario de celdas / selecciones a la vez (en lugar de anular la selección solo de la celda o área activa)

Estoy publicando el script aquí, con una pequeña mejora de usabilidad (eliminé condicionalmente el primer aviso redundante de la publicación 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 usarlo, se realiza una selección, invocar la DeselectCellsmacro (que es mejor que ser guardado en su libro de macros personal y asignado a un acceso directo) y seleccionar las células que se van de seleccionado en la ventana emergente que aparece:

Deseleccionar celdas

Giovanni
fuente
Buen hallazgo, gran respuesta.
Burgi
1

Ahora es posible anular la selección con CTRL de una celda seleccionada por error. Es una nueva función integrada en Office 365 o versiones recientes. ¡Finalmente!

Steve
fuente