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?
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?
Respuestas:
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
deselect
una celda. ¡Es absolutamente ridículo! ¿Estoy seleccionando cada 2da columna y si me equivoco, debo comenzar de nuevo? Eso es% & * ing loco!
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 DeselectCells
macro (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:
UnSelectActiveCell
más rápido si se une por rangos y solo recorre las celdas siNot Intersect(Area,ActiveCell) Is Nothing
. Puede que no sea el caso si laIntersect
función es mucho más lenta que laStrComp
función que no puede compensar la reducción en las llamadas aUnion
.