Posicionamiento del cursor en una hoja de Excel
Resuelto
sebyyy
-
Usuario anónimo -
Usuario anónimo -
Hola,
He estado trabajando en un proyecto durante un tiempo y estoy buscando cómo posicionar el cursor en una celda específica.
Me explico:
Debo insertar números en un rango, y mientras tanto, necesito hacer funcionar una macro y me gustaría que, cuando termine de usar mi macro, el cursor se coloque automáticamente en la celda en la que estaba antes de usar mi macro.
¿Alguien podría ayudarme?
El único problema es que no siempre
Configuración: Windows 7 / Chrome 52.0.2743.116
He estado trabajando en un proyecto durante un tiempo y estoy buscando cómo posicionar el cursor en una celda específica.
Me explico:
Debo insertar números en un rango, y mientras tanto, necesito hacer funcionar una macro y me gustaría que, cuando termine de usar mi macro, el cursor se coloque automáticamente en la celda en la que estaba antes de usar mi macro.
¿Alguien podría ayudarme?
El único problema es que no siempre
Configuración: Windows 7 / Chrome 52.0.2743.116
7 respuestas
-
Buenas noches sebyyy,
Mira este código VBA:
Option Explicit Sub Essai() Dim cellX As Range ' 1) antes de hacer el trabajo de la macro: Set CellX = ActiveCell ' 2) trabajo de la macro Essai = lo que quieres hacer: ' inserción de números en un rango (u otra cosa) ' 3) ir a la celda de inicio (antes del trabajo) CellX.Select End Sub
También puedes utilizar este método:
Option Explicit Sub Essai() Dim lig As Long, col As Integer ' 1) antes de hacer el trabajo de la macro: lig = ActiveCell.Row: col = ActiveCell.Column ' 2) trabajo de la macro Essai = lo que quieres hacer: ' inserción de números en un rango (u otra cosa) ' 3) ir a la celda de inicio (antes del trabajo) Cells(lig, col).Select End Sub
Si tu problema está resuelto, gracias por ir arriba de la página
para hacer clic en « Marcar como resuelto ».
Cordialmente. 😊
-
Gracias Alkan por tu respuesta ultra rápida, pero me indica un mensaje de error y la ventana de VBA se abre cada vez...
¿Debo hacer una modificación en los VBA?
;-)-
Tu debes colocar tu código VBA en un módulo, por ejemplo en Módulo1.
¡Y no los 2 al mismo tiempo: o el primer código VBA, o el segundo!
¿Cuál es tu mensaje de error? Cuando haces clic en el botón « Depurar »,
¿cuál es la línea de tu código VBA que se resalta en amarillo (si hay alguna)?
¿Puedes poner en tu próximo mensaje la Sub de tu código VBA que presenta
el problema (simplemente copiándola y pegándola)? Espero tu respuesta. 😊
Hola Sebyyy, ¿quizás veas mejor con mi archivo de Excel 2007? 😉
Cuando abras el archivo de Excel, puedes hacer < Ctrl >< a > que lanza
la macro Ensayo1() o < Ctrl >< b > que lanza la macro Ensayo2(). Hará
exactamente lo mismo, pero el código VBA es diferente: tú tienes que
leer todo lo que hay en Módulo1 (hay muchos comentarios).
Si está bien, no olvides marcar el tema como resuelto; si no, envíame
tu archivo de Excel a través de cjoint.com o mon-partage.fr 😊
Buenas tardes sebyyy,
Escribiste: "no puedo ni después de múltiples intentos... :-( ";
pero, ¿con qué archivo de Excel? ¿El tuyo, o el que puse en el enlace
de mi mensaje #6?
Si es con el mío, que he probado y funciona correctamente,
entonces es solo un manejo que debes hacer.
Si es con el tuyo, lo mejor es que me envíes tu archivo:
ve a la página mon-partage.fr; debes abrir el archivo, luego
hacer clic en el botón "Uploader"; espera un poco: verás
entonces arriba un enlace para copiar y pegar en tu próxima
publicación en el foro.
Si no puedes, intenta de nuevo con la página
cjoint.com; deberás ingresar tu dirección de correo electrónico, que permanecerá
confidencial. También habrá un enlace para copiar y pegar.
Espero tu respuesta. 😊
-
-
Hola,
Para adjuntar un archivo, utiliza el sitio cjoint.
Encontrarás un tutorial completo que te ayudará a hacer esto.
https://www.commentcamarche.net/faq/29493-utiliser-cjoint-pour-heberger-des-fichiers
Gracias. -
albkan,
Aquí está el enlace:
https://mon-partage.fr/f/z6pmtPCy/
Gracias de nuevo por tu valiosa ayuda ^^-
Hola sebyyy,
Si descargaste y probaste el archivo de Excel 2007 de mi mensaje #6, pudiste
ver que es una muy buena demostración de lo que pediste al principio.
Dime si esta demostración te ayudó a entender mejor el funcionamiento de
guardar / recuperar la posición de la celda activa.
----------------------------------------------------------
Todo lo que sigue es para el archivo que me enviaste (por lo cual te agradezco).
=================================
1) No olvidaste, ¿verdad?, que tienes 3 hojas ocultas? 😉
----------------------------------------------------------
2) Es normal que no hayas logrado hacer funcionar mi código VBA: lo pusiste
en ThisWorkbook en lugar de ponerlo en un módulo. Así que selecciona todo
el código y haz un cortar / pegar de ThisWorkbook (que estará vacío)
en Module3 (que actualmente está vacío). Pero al leer los comentarios,
entenderás que para ver que funcione, debes agregar un trabajo de
tu elección en el paso 2) del código VBA que vaya a una celda distinta de la celda
activa. Si haces todo esto correctamente, tendrás el mismo tipo de
funcionamiento que el de mi demostración (la que mencioné al inicio
de este mensaje, es decir, el archivo de Excel 2007 que te envié).
----------------------------------------------------------
3) Después del cortar / pegar anterior, Module3 que estaba vacío ya no lo está.
Module5 está vacío; Module4 contiene una sola línea: Option Explicit
(por lo tanto, es innecesario ya que no hay ninguna sub o función) => como si estuviera
también vacío, por lo que puedes eliminar los dos módulos 4 y 5.
----------------------------------------------------------
4) Lo que preguntaste después en tu burbuja de texto no está muy claro.
La columna donde insertas números, ¿es de B22 a B111?
Luego, ¿debería continuar de G22 a G111?
Siguiendo con lo que pediste, ¿puedes confirmarme que:
a) Solo la 1ª hoja "LOTOVérif" está involucrada, o debemos ver otras
hojas (posiblemente ocultas)?
b) Solo la macro QUINE1 del Module6 está involucrada o debo ver otra
parte de tu código VBA (si es así, ¿cuál?)
----------------------------------------------------------
5) Así que por ahora, entiendo lo siguiente: para tu nueva solicitud, debo ver
solo la 1ª hoja "LOTOVérif" y la macro QUINE1() del Module6; luego:
Cada vez que uses tu macro QUINE1() del Module6, tu celda activa
que estaba inicialmente en B22 debe bajar una celda hasta B111; y luego,
ya sea que se detenga en B111 o que deba continuar en G22 para descender
una celda hasta G111.
Confírmamelo, o aclara mejor lo que deseas. ¡Porque ten en cuenta que
una enunciación de ejercicio bien expuesta ya es el 50 % de la solución! 😉
=================================
Espero tu respuesta. Cordialmente. 😊
-
-
Hola albkan,
otra vez gracias por esta información. Entonces, me gustaría que la celda activa esté siempre entre las celdas B22 y B111. Las celdas G22 a G111 están destinadas únicamente para otra cosa... (sacar los 90 números).
Gracias ;-) -
Albkan,
te vuelvo a adjuntar el archivo con macros adicionales. Tendrás un pequeño globo con lo que me gustaría más precisamente. Espero que puedas ayudarme con la finalización de mi programa.
Y los pestañas ocultas, no nos ocupamos de eso... son datos para que mi proyecto funcione.
Muchas gracias otra vez ;-)
https://mon-partage.fr/f/DnnqgnpD/-
Hola sebyyy,
¡Tu nuevo archivo de Excel 2007 está listo!
-------------------------------------------------------
1) Uso
Cuando ingresas un n° en una de las celdas B22 a B111, presiona < Enter >
para quedarte en la misma celda; o < ↓ > para bajar a la siguiente celda.
-------------------------------------------------------
2) Parte de VBA
Verás que he podido hacer muchas simplificaciones; para los módulos,
solo quedan 2, y todo está en Módulo1 y Módulo2.
-------------------------------------------------------
Dime qué piensas y si te conviene.
Si tu problema está resuelto, gracias por ir a la parte superior de la página
para hacer clic en "Marcar como resuelto".
Saludos. 😊
-
-
Hola albkan,
¡Ya te doy muchas gracias por tu ayuda que avanza mi proyecto de maravilla! ^^
Solo que tengo algunas cositas más... es al realizar una prueba que se nota que hay cosas que no funcionan a la perfección... :-/
1) También me gustaría que, cuando utilizo la macro "findes90", el cursor se coloque después de los números que acabo de insertar. Entonces, si he insertado por ejemplo 42 números en las celdas de B22 a B111, mi macro va a cancelar los números de las celdas G22 a G111 y me gustaría que el cursor se pusiera después de los números insertados en las celdas de B22 a B111.
2) Hay una casilla amarilla al lado del cuadrado "LOTOVérif" rojo. Si hago un control de una carta manual (que no sería válida), el cursor no se coloca automáticamente en las celdas de B22 a B111. ¿Es eso también posible? Por ejemplo, durante el juego, una persona se anuncia, yo controlo manualmente la carta escribiendo el número en esa casilla amarilla, seguido de la tecla "ENTER". Pero la casilla activa permanece en la que está justo debajo.
3) Sería un lujo si puedes hacerme eso, me gustaría que las filas de 21 a 100... (hasta el final de la página) se oculten. He intentado, pero cuando inserto mis números, la casilla activa B22 nunca cambia. (Eso, solo si es posible).
Sé que soy pesado, pero te prometo que después de esto te dejaré en paz. Normalmente, si funciona, mi proyecto estará terminado y podré usarlo pronto.
Una vez más, te agradezco por tu ayuda que me es muy valiosa.
Con cariño-
Buenas noches sebyyy,
Según lo que escribiste en tu punto 2), te aconsejo hacer lo siguiente:
botón Office (= Archivo), « Opciones de Excel »; a la izquierda: « Opciones avanzadas »;
a la derecha, 1ª sección « Opciones de edición », desmarca la siguiente casilla:
☐ Mover la selección después de la validación
Es mucho más práctico: después de haber validado una celda con
la tecla < Enter >, la selección se queda en esa misma celda, lo que permite
hacer otra cosa sobre ella: formatearla en negrita, elegir otro
formato de celda, etc. Y si necesitas ir a la celda de abajo,
basta con usar < ↓ > en lugar de < Enter >
--------------------------------------------------
Para hacer tu punto 2), he modificado el código VBA de Feuil1 (LOTOVérif).
Para el resto, luego modifiqué el código VBA de Module1.
El código VBA de Module2 es el mismo que el anterior.
--------------------------------------------------
No entendí bien tu punto 3), pero quizás ya se haya hecho
con las nuevas modificaciones que realicé. Si es así, ¡mejor!: ¡resuelto!
De lo contrario:
Para las filas 21 a 100, ¿estás seguro de querer ocultarlas (= esconder)?
Si es así: Rows("21:100").Hidden = True
¿Pero a raíz de qué quieres hacerlo entonces? ¿Solo pensándolo, telepáticamente?
¿Por la operación del Espíritu Santo de Excel? No, no, estoy bromeando, por supuesto! 😉
Pero entiendes que debes dar más precisiones.
Además, cuando estas filas estén ocultas, sin duda querrás volver a mostrarlas.
Si es así: Rows("21:100").Hidden = False
Pero otra vez, ¡hay que decir a raíz de qué! 😉
Estoy totalmente dispuesto a hacer tu punto 3) tan pronto como me des todas
las precisiones útiles (si no se han hecho ya por mis últimas modificaciones, ya que no
estoy seguro de que realmente quieras esconder las filas 21 a 100, sino solo cambiar la posición de la celda activa).
--------------------------------------------------
Aquí tienes tu nuevo archivo de Excel 2007.
--------------------------------------------------
Amistosamente, albkan 😊
-