2012-09-03 22:07:34 +0000 2012-09-03 22:07:34 +0000
9
9

Se busca "deseleccionar" en VBA de Excel

Me gustaría que la apariencia final, después de que mi VBA haya terminado de ejecutarse, esté vacía de selecciones – que no tenga ninguna celda o rango en ninguna hoja coloreada (si fue rango seleccionado) o en un cuadro de línea en negrita (cualquier cosa que haya sido seleccionada). Pupose: para presentar al cliente una apariencia final ordenada.

He buscado y no encuentro cómo hacer esto. Hay un Unselect según MS, pero no parece hacer nada.

Respuestas (8)

10
10
10
2013-11-25 13:31:37 +0000

Selecciona cualquier celda y desactiva CutCopy:

Range("A1").Select
  Application.CutCopyMode = False
2
2
2
2012-09-05 18:38:48 +0000

Excel siempre tiene algo seleccionado. Se necesita una solución. Al seleccionar una celda fuera de la pantalla, el foco se colocará allí, por lo que no funcionará por sí mismo. Este código coloca el cursor fuera de la pantalla y luego desplaza la hoja hacia arriba para ver A1.

Sub NoSelect()    
  Range("BB100").Select
  ActiveWindow.SmallScroll up:=100
  ActiveWindow.SmallScroll ToLeft:=44
End Sub

Si realmente quiere que no se seleccione nada, puede utilizar VBA para proteger la hoja al final de la ejecución del código, lo que hará que no se seleccione nada. Puedes añadir esto a una macro o ponerlo en tu VBA directamente.

Sub NoSelect()
   With ActiveSheet
   .EnableSelection = xlNoSelection
   .Protect
   End With
End Sub

En cuanto la hoja esté desprotegida, el cursor activará una celda.

2
2
2
2014-09-04 13:06:33 +0000

Hay una forma complicada de hacerlo.

Cree un objeto como un botón. Seleccione este botón, luego escóndalo, y ninguna celda será seleccionada.

ActiveSheet.Shapes("Button 1").Visible = True

ActiveSheet.Shapes("Button 1").Select

ActiveSheet.Shapes("Button 1").Visible = False

Eso es todo.

1
1
1
2018-12-20 12:44:14 +0000

Pregunta muy antigua, pero mi respuesta como referencia:

Puedes usar

With ActiveSheet
    .EnableSelection = xlNoSelection
    .Protect
End With
1
1
1
2015-02-22 19:00:40 +0000

Dependiendo del tamaño de su selección, para deshacerse de cualquier artefacto (no sé si esto también es un problema en 2013 Excel, pero en Mac fue un dolor constante para mí) sólo puede bucle a través de la celda por celda y seleccionar cada uno.

1
1
1
2016-04-11 07:18:46 +0000

Al desactivar la actualización de la pantalla antes de seleccionar una celda, se desactiva temporalmente el desplazamiento a las celdas seleccionadas.

Este código comprueba qué celdas son visibles actualmente y selecciona la primera celda por debajo del rango visible que no está a la vista. Por ejemplo, cuando lo pruebo El rango visible es A1:BC79, entonces este código selecciona A80 y si se desplaza hacia abajo y hacia la derecha y se ejecuta de nuevo, el excel elige la primera celda NO visible debajo de la primera columna visible.

Dim r As Range Application.ScreenUpdating = False Set r = Application.ActiveWindow.VisibleRange r(r.Cells.Count + 1).Select Application.ScreenUpdating = True
1
1
1
2012-09-05 17:56:56 +0000

La única respuesta es hacer trampa.

Ocultar la columna A y la fila 1

Poner el cursor en A1. Habrá un pequeño punto en la esquina de B2

0
0
0
2016-10-11 16:29:56 +0000

Usa un truco: Añadir una forma, luego seleccionarla y ocultarla.

El código fuente de esto está en respuesta a otra pregunta en este sitio.