Mover el enfoque o puntero a otra celda automáticamente
Molesto con la siguiente consulta: que función (no código VBA) puedo utilizar para que el puntero o el enfoque me cambie a una celda determinada de forma automática, puede ser después de cumplir un criterio.
1 respuesta
La respuesta es VBA. ¿Por qué no quieres usar VBA?
Además que significa cumplir un criterio... Las soluciones de VBA para cosas como estas se plantean a través de eventos... y con ellos se pueden hacer muchas cosas pero no todo, asi que si no dices que significa "criterio" no hay ni como analizar posibilidades.
Hola, antes que nada gracias por tomarte la molestia en responder, con lo de criterio me refiero a un ejemplo la suma de dos celdas si el resultados en fulano direccionar el puntero a una celda, su el resultado es mengano direccionar el puntero a otra celda,,,, por que no VBA la verdad no manejo bien el código y quiero entender que hago, por eso prefería una función, ahora si no hay de otra y me puedes ayudar con el código te lo agradezco.
Excel es capaz de reaccionar automaticamente con una macro pre-programada (por ti), siempre y cuando el tipo de "evento" que "dispara" la ejecucion de la macro sea uno de los conocidos por Excel.
Uno de estos es "Change" que es un evento que se produce cuando algo cambia en una hoja de cálculo. Excel detecta eso y "graba" la ubicación de la celda que ha cambiado... y con esa ubicación, tu... dependiendo del valor al que cambiado la celda puedes preparar una macro...
Te adjunto abajo un ejemplo y te explico que hace... veras que se puede deducir la lógica y adaptarlo a tu caso particular
Estando en la hoja de Excel en la que están los valores que podrían cambiar tienes que presionar Alt+F11... entrarás al ambiente VBA... presionas F7. Entrarás asi a la ventana para escribir el código en el módulo de la hoja donde esté tu cursor. Allí tipeas este código, adaptándolo a tu situación.
Option Compare Text Private Sub Worksheet_Change(ByVal Target As Range) Dim celda As Range, direc As String, valor As Variant Application.EnableEvents = False Set celda = Target direc = Replace(celda.Address, "$", "") valor = celda.Value If direc = "B4" And valor > 15 Then Range("C7").Select ElseIf direc = "B4" And valor > 13 And valor <= 15 Then Range("C8").Select ElseIf direc = "B4" And valor <= 13 Then Range("C9").Select ElseIf direc = "C3" And valor > 8 Then Sheets("Ventas").Range("C10").Select ElseIf direc= "C6" And valor = "ok" Then Range("C13").Select End If Set celda = Nothing Application.EnableEvents = True End Sub
En el ejemplo, el código:
Si la celda B4 ha cambiado su valor a algo mayor a 15 manda el cursor a la celda C7
Si la celda B4 mas bien ha cambiado su valor a un numero mayor que 13 pero menor igual a 15, irá mas bien a C8
Si la celda B4 más bien ha cambiado su valor a un numero menor o igual a 13 irá C9
Si la celda C3 ha cambiado hacia un valor >8 irá a la celda C10 de la hoja "Ventas"
Si en la celda C6 acabas de escribir "ok" irá a la celda C13
Tu puedes escoger cuantas opciones pones, con que celdas (puede ser solo una o varias como el ejemplo), y los valores... si el movimiento es en la misma hoja, o hacia otra hoja...
Adapta el código a tu caso particular., combinando según las opciones que necesites.
Hola, lo que me mandas esta perfecto me ayuda mucho pero que pasa si yo quiera que la celda en la que caiga el enfoque no la tengo definida se que colomna pero no que fila, ejemplo quisiera algo así:
ElseIf direc= "C6" And valor = "ok" Then Range("C13" + 1).Select
se que la sintaxis esta mal y que asi no funciona, como seria?
No entiendo lo que quieres decir...
Que significa C13 + 1?
O quizás quieres moverte a la columna C... ¿en la fila en la que acabas de modificar la información? Es decir si modificas un "si" en la columna F, ¿vayas a misma fila en la columna C?
Pero tienes que dejar claro como sabrá la macro donde empezar...
La primera vez... podemos asumir que empieza en C13, pero la siguiente vez... se ha cambiado la misma celda (digamos C6).. y correspondería ir a C14... ¿por qué? ¿Por qué ya hay algo escrito en C13?...
Y además que hay más abajo en C14... C15, C16, C17, etc... ¿y qué hay más arriba de C13?
La siguiente vez que cierras y abras el archivo... ¿empieza en C13 o en el que correspondía desde la ultima vez que usaste el archivo?
Como te decía es para una facturación la celda C13 ya estaría ocupada por un producto, por lo que necesito el enfoque en la celda siguiente y así sucesivamente mientras tenga productos para facturar
Suponiendo que el primer producto vaya a ser digitado en la celda C13, el siguiente en C14, etc..
Agrega a la tercera línea: Dim celda as ... valor as Variant, i as Long
y cambia Range("C13").Select por
i=12
Do
i=i+1
Loop Until Cells(i,"C") = Empty
Cells(i,"C").Select
No olvides valorar la respuesta
Hola, en tiendo el concepto de lo que me dices, ahora bien no se si te lo dije pero no manejo VBA por eso pedía una función, lo ultimo que me mandas si me lo explicas mejor te agradezco, te adjunto imagen de la hoja de Excel para ver si me hago entender mejor, si me explicas como te mando el archivo de Excel.
Si deseas enviame el archivo
Y responde una consulta (la foto no se me muy clara)...
1) Cual(es) dato(s) de la factura escribes tu... y..
2) En el momento de escribir cual datos es que quieres que se mueva luego el cursor automaticamente... y
3) Exactamente a que lugar quieres que se mueva...
4) No llego entender cual es la "condición" a la que te refieres... ¿haber escrito algo en alguna celda, o haber escrito alguna cosa en particular en una celda?
Si puedes poner un ejemplo con las celdas que tenga el archivo
Mi email
oK, Si ves la imagen donde esta lo verde yo ingreso datos arriba el producto a buscar al lado la cantidad de cada producto, lo amarillo son las listas desplegables que me resultan de la búsqueda en cada caso ahí selecciono el producto concreto entre varias opciones resultantes de la búsqueda, a esa parte es que quiero que valla el enfoque cada ves que escribo el producto a buscar....... te mando el archivo por mail
- Compartir respuesta