Celda activa de Excel en la esquina superior izquierda
Resuelto
le Glauque
Mensajes publicados
60
Fecha de registro
Estado
Miembro
Última intervención
-
le Glauque Mensajes publicados 60 Fecha de registro Estado Miembro Última intervención -
le Glauque Mensajes publicados 60 Fecha de registro Estado Miembro Última intervención -
Hola a todos,
Estoy buscando crear una serie de macros (que luego vincularé a un botón) que me lleven cada vez a una celda diferente (en función del botón).
Hasta ahora, sin problema, he creado macros (con el grabador, porque no sé nada de Visual Basic), y esa macroparece seleccionar bien la celda en cuestión.
Pero lo máximo sería que me lleve esa celda a la parte superior izquierda de la pantalla...
Me informé evidentemente en internet antes de venir a molestar... pero no encuentro respuestas...
Digamos que la única que encontré, en el sitio de Microsoft, es la siguiente:
Síntomas
¿Existe algún comando que permita seleccionar cualquier celda de una hoja de cálculo y ubicarla en la esquina superior izquierda de la ventana activa?
Solución
Basta con usar la función SELECCION.ATREASAR con su segundo argumento igual a VERDADERO.
EJEMPLO :
=SELECCION.ATTEÑIR("L20C20";VERDADERO)
=RETORNAR()
Esta macro ordena seleccionar la celda L20C20 y desplaza la ventana activa para mostrar la celda L20C20 en la esquina superior izquierda de la ventana activa de la hoja de cálculo.
Si este segundo argumento es FALSO o se omite, Microsoft Excel realiza el desplazamiento normal.
Sin embargo, no logro entender cómo implementarlo. Un copiar/pegar en el editor VB (y el reemplazo por las celdas que me interesan) no parece funcionar (le cuesta con el punto y coma antes del VERDADERO...).
Estoy algo perdido...
¡Ayuda!
Gracias de antemano...
l.G.
Estoy buscando crear una serie de macros (que luego vincularé a un botón) que me lleven cada vez a una celda diferente (en función del botón).
Hasta ahora, sin problema, he creado macros (con el grabador, porque no sé nada de Visual Basic), y esa macroparece seleccionar bien la celda en cuestión.
Pero lo máximo sería que me lleve esa celda a la parte superior izquierda de la pantalla...
Me informé evidentemente en internet antes de venir a molestar... pero no encuentro respuestas...
Digamos que la única que encontré, en el sitio de Microsoft, es la siguiente:
Síntomas
¿Existe algún comando que permita seleccionar cualquier celda de una hoja de cálculo y ubicarla en la esquina superior izquierda de la ventana activa?
Solución
Basta con usar la función SELECCION.ATREASAR con su segundo argumento igual a VERDADERO.
EJEMPLO :
=SELECCION.ATTEÑIR("L20C20";VERDADERO)
=RETORNAR()
Esta macro ordena seleccionar la celda L20C20 y desplaza la ventana activa para mostrar la celda L20C20 en la esquina superior izquierda de la ventana activa de la hoja de cálculo.
Si este segundo argumento es FALSO o se omite, Microsoft Excel realiza el desplazamiento normal.
Sin embargo, no logro entender cómo implementarlo. Un copiar/pegar en el editor VB (y el reemplazo por las celdas que me interesan) no parece funcionar (le cuesta con el punto y coma antes del VERDADERO...).
Estoy algo perdido...
¡Ayuda!
Gracias de antemano...
l.G.
Configuración: Windows XP Firefox 2.0.0.14
1 respuesta
-
hola
buscando en los foros había encontrado esto que podría servirte:Sub test() 'para ubicar la celda S4 en la esquina superior izquierda Fila 4, columna 19 Hoja = ActiveSheet.Name MakeTopLeft ThisWorkbook.Sheets(Hoja).Cells(4, 19) End Sub Sub MakeTopLeft(R As Range) R.Parent.Activate ActiveWindow.ScrollRow = R.Row ActiveWindow.ScrollColumn = R.Column End Sub
hasta luego-
Muchas gracias.... Así que lo copié todo en la pestaña (Hoja1). Entonces, la celda en cuestión aparece en la esquina superior izquierda (¡y eso es genial!), pero no es la "celda activa"; esta última sigue siendo la celda que estaba seleccionada antes... Además, ¿podría explicarme un poco en qué consiste esto (bueno, si no es demasiado complicado y si no le molesta demasiado)? Me gusta intentar entender un poco... Gracias de antemano, l.G.
-
hola
aquí está el código adaptado para colocar la celda activa en la esquina superior izquierda:Sub test() LigIni = Selection.Row Colini = Selection.Column Onglet = ActiveSheet.Name 'para colocar la celda S4 en la esquina superior izquierda Fila 4, columna 19 'MakeTopLeft ThisWorkbook.Sheets(Onglet).Cells(4, 19) MakeTopLeft ThisWorkbook.Sheets(Onglet).Cells(LigIni, Colini) End Sub
la propiedad ScrollRow devuelve o establece el número de la fila que aparece en la parte superior del panel o de la ventana.
también puedes usar simplemente estas dos líneas de código (más sencillo que llamar a la procedimiento "MakeTopLeft") :Sub test2() ActiveWindow.ScrollRow = Selection.Row ActiveWindow.ScrollColumn = Selection.Column End Sub
todo depende de tu uso.
hasta luego -
Muchas gracias, He copiado tus dos pequeńas líneas de código tras la Macro que había grabado previamente... y ¡funciona! He vuelto a copiar eso en todas las macros involucradas... ¡es estupendo! Muchas gracias. Aquí tienes lo que resulta (el objetivo del juego es buscar el título de una categoría de habilidades para tenerlas directamente ante los ojos): Sub Per() Sheets("Compétences").Select Range("A81").Select ActiveWindow.ScrollRow = Selection.Row ActiveWindow.ScrollColumn = Selection.Column End Sub Entonces, para esta, va a buscar la celda del título de las habilidades de Percepción y la coloca en la esquina superior izquierda de la pantalla. Así tengo todas las habilidades de Percepción debajo... ¡Es perfecto! Por otro lado, parecía muy bien todo el MakeTopLeft, etc. ¿Hubo alguna manera de hacer lo mismo por otras vías? Gracias de nuevo! l.G.
-
-
Entonces, si te sigo, ¿hay que copiar esta fórmula:
Sub MakeTopLeft(R As Range)
R.Parent.Activate
ActiveWindow.ScrollRow = R.Row
ActiveWindow.ScrollColumn = R.Column
End Sub
en las Procedures del doc?
y luego, la de:
Sub test()
LigIni = Selection.Row
Colini = Selection.Column
Onglet = ActiveSheet.Name
End Sub
en las Functions?
Y entonces, después, en los módulos, si por ejemplo, quiero que una Macro coloque la celda A75 en la esquina superior izquierda, y que esa celda quede activa
Sub test()
MakeTopLeft ThisWorkbook.Sheets(Onglet).Cells(75, 1i)
End Sub
¿Estoy en lo correcto?
ThisWorkbook, ¿designa el documento actual?
Sheets, ¿eso es la hoja? ¿Es necesario indicar el nombre de la hoja?
Si dicha hoja tiene un nombre (por ejemplo "Compétences"), ¿debería ponerse:
Sub test()
MakeTopLeft ThisWorkbook.Sheets(Compétences).Cells(75, 1i)
End Sub
Lo siento,
estas preguntas pueden parecer básicas...
Gracias de antemano...
-