Mantenimiento de la celda activa (Microsoft Excel)
Un libro de Excel puede contener cualquier número de hojas de trabajo individuales. A medida que se desplaza por las distintas hojas de trabajo, Excel realiza un seguimiento de qué celda está seleccionada en qué hoja de trabajo. Cuando cambia a una nueva hoja de trabajo, Excel activa la celda que estuvo activa por última vez dentro de esa hoja de trabajo. Por lo tanto, si seleccionó por última vez la celda F9 en la hoja de trabajo, esa es la que se selecciona cuando muestra la hoja de trabajo nuevamente, independientemente de lo que se seleccionó en la hoja de trabajo anterior.
Sin embargo, para algunos libros de trabajo, es posible que desee que Excel haga que la celda activa en la hoja de trabajo seleccionada sea la misma que la celda activa en la hoja de trabajo anterior. No hay una configuración para hacer esto automáticamente en Excel, pero hay un par de cosas que puede probar. Una cosa es seguir estos pasos:
-
Mantenga presionada la tecla Ctrl mientras hace clic en la pestaña de la hoja de trabajo a la que desea ir. Ahora deben seleccionarse dos pestañas de la hoja de trabajo; el que tiene el nombre en negrita es el que realmente se muestra en la pantalla.
-
Haga clic en la pestaña de la hoja de trabajo a la que desea ir. Ambas pestañas aún deben estar seleccionadas, pero solo la que hizo clic debe tener su nombre en negrita.
-
Mantenga presionada la tecla Ctrl mientras hace clic en la pestaña de la hoja de trabajo que acaba de dejar.
Estos pasos funcionan porque está «agrupando» hojas de trabajo. Cuando lo hace, Excel hace que las celdas seleccionadas sean las mismas para todas las hojas de trabajo del grupo.
Recordar usar la secuencia Ctrl-clic-clic-Ctrl puede ser engorroso, en el mejor de los casos. También es una secuencia que puede estar plagada de peligros, porque si olvida hacer el paso 3, podría terminar haciendo cambios no deseados en sus hojas de trabajo. (Mientras trabaja con hojas de trabajo agrupadas, cualquier cambio que realice en una hoja se modificará de manera similar en todas las hojas del grupo).
Estos tres pasos no se pueden automatizar con macros, pero puede adoptar un enfoque diferente con una macro para realizar la misma tarea. Lo primero que debe hacer es declarar una variable pública en cualquier lugar dentro de un módulo del libro de trabajo, como se muestra aquí:
Public sAddress As String
Esta variable, sAddress, se utilizará para almacenar la dirección actual de la celda activa. En el módulo «ThisWorkbook» del libro de trabajo, agregue estas dos macros:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _ ByVal Target As Excel.Range) sAddress = ActiveCell.Address End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object) On Error Resume Next If sAddress > "" Then Sh.Range(sAddress).Select End Sub
Excel ejecuta automáticamente la primera macro cada vez que cambia la celda seleccionada. Todo lo que hace es recuperar la dirección de cualquier celda que esté activa y luego almacenar esa dirección en la variable sAddress.
La segunda macro se ejecuta automáticamente cada vez que se activa un libro.
Comprueba si hay algo almacenado en sAddress. Si lo hay, selecciona cualquier dirección de celda almacenada allí. El código de error es necesario en caso de que seleccione una hoja que no use celdas, como una hoja de gráfico.
Este enfoque macro funciona muy bien si solo desea realizar este cambio de navegación en uno o dos libros de trabajo. Si prefiere hacer el cambio «en todo el sistema» (por así decirlo), debe ser un poco más complejo en su enfoque de la macro. En este caso, debe colocar su código en el libro de trabajo Personal.xls para que se cargue cada vez que inicie Excel. Específicamente, coloque el siguiente código en un nuevo módulo de clase del libro Personal.xlsm. Este módulo de clase debería tener un nombre descriptivo, como ClassXLApp:
Public WithEvents gobjXLApp As Excel.Application Private mstrAddress As String Private Sub gobjXLApp_WorkbookActivate(ByVal Wb As Excel.Workbook) On Error Resume Next If mstrAddress > "" Then ActiveSheet.Range(mstrAddress).Select End Sub Private Sub gobjXLApp_SheetActivate(ByVal Sh As Object) On Error Resume Next If mstrAddress > "" Then Sh.Range(mstrAddress).Select End Sub Private Sub gobjXLApp_SheetSelectionChange(ByVal Sh As Object, _ ByVal Target As Excel.Range) mstrAddress = Selection.Address End Sub
A continuación, abra el módulo «ThisWorkbook» de su libro de trabajo personal y copie el siguiente código en él:
Private mobjXLApp As New ClassXLApp Private Sub Workbook_Open() Set mobjXLApp.gobjXLApp = Excel.Application End Sub
Una vez que guarde su libro personal y reinicie Excel, el rango del primer libro que se abre se seleccionará en la siguiente hoja de trabajo que se seleccione.
_Nota: _
Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.
link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador]
.
ExcelTips es su fuente de formación rentable en Microsoft Excel.
Este consejo (10562) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365. Puede encontrar una versión de este consejo para la interfaz de menú anterior de Excel aquí:
link: / excel-Maintaining_the_Active_Cell [Mantenimiento de la celda activa]
.