Saltar al contenido

Desplazamiento restringido entre celdas tecla enter y tabulador


rfm

Recommended Posts

publicado

Buenos días a todos y todas.

En la hoja de Excel en la estoy trabajando, necesito algo que no consigo hacer yo mismo.

Cuando pulse entre o tabulador, la selección debe desplazarse a una celda concreta, y no hacia abajo o a la derecha (sé que se puede configurar desde excel).

Buscando por internet, creo haber dado con una posible solución, gracias a la colaboración de un "experto en un foro". De hecho el tema aparece como "solucionado".

El caso es que aún teniendo el código no sé cómo aplicarlo, porque habla de eventos y macros (no sé muy bien cuál es la diferencia).

El código está en el archivo adjunto.

Agradecería ayuda. Muchas gracias.

Desplazamiento.rar

publicado

Sobre tus dudas acerca de las macros, las macros de evento son aquellas asociadas a un objeto, por ejemplo, libro, hoja, celda, control de formulario,.... y se ejecutan de forma automática al producirse el evento, por ejemplo, click, click-derecho, seleccionar una celda, seleccionar una hoja. Estas macros van en el Objeto.

El resto de macros, las no asociadas a un evento, se ejecutan a petición del usuario a través de la lista de macros o por medio de otro objeto, por ejemplo click en un botón en la hoja, por medio de una llamada en formulario,..... Estas macro van en un Módulo.

En el adjunto encontrarás dos macros de evento, una asociada al evento Open del libro y otra asociada al evento SelectionChange de la hoja.

Mi propuesta es distinta a tu planteamiento, pero creo que el resultado final es el que pretendes.

Ya comentarás si es eso lo que andas buscando.

Desplazamiento.xls

publicado
Buenos días a todos y todas.

En la hoja de Excel en la estoy trabajando, necesito algo que no consigo hacer yo mismo.

Cuando pulse entre o tabulador, la selección debe desplazarse a una celda concreta, y no hacia abajo o a la derecha (sé que se puede configurar desde excel).

Buscando por internet, creo haber dado con una posible solución, gracias a la colaboración de un "experto en un foro". De hecho el tema aparece como "solucionado".

El caso es que aún teniendo el código no sé cómo aplicarlo, porque habla de eventos y macros (no sé muy bien cuál es la diferencia).

El código está en el archivo adjunto.

Agradecería ayuda. Muchas gracias.

Hola @[uSER=170524]rfm[/uSER]

Revisa el archivo adjunto, funciona de modo que si editas (editar significa que aunque no realices cambios Excel lo toma como tal por el simple hecho de dar F2 o doble click a la celda) las celdas correspondientes ("A1,C1,E1,G1,A4,C4,E4,G4") el desplazamiento sera tal como lo deseas, de lo contrario Excel se desplazara de modo normal

Ya nos comentaras algo...

Saludos

Desplazamiento restringido entre celdas tecla enter_GP.rar

publicado
Sobre tus dudas acerca de las macros, las macros de evento son aquellas asociadas a un objeto, por ejemplo, libro, hoja, celda, control de formulario,.... y se ejecutan de forma automática al producirse el evento, por ejemplo, click, click-derecho, seleccionar una celda, seleccionar una hoja. Estas macros van en el Objeto.

El resto de macros, las no asociadas a un evento, se ejecutan a petición del usuario a través de la lista de macros o por medio de otro objeto, por ejemplo click en un botón en la hoja, por medio de una llamada en formulario,..... Estas macro van en un Módulo.

En el adjunto encontrarás dos macros de evento, una asociada al evento Open del libro y otra asociada al evento SelectionChange de la hoja.

Mi propuesta es distinta a tu planteamiento, pero creo que el resultado final es el que pretendes.

Ya comentarás si es eso lo que andas buscando.

Un par de aclaraciones con respecto a las macros:

Las macros que no van asociadas a un evento también pueden estar dentro del objeto.

Todo y estando en un módulo, las macros aparecerán solamente en la lista de macros si están declaradas como públicas y no llevan parámetros.

-

publicado

Hola de nuevo. Ya he testeado vuestros ejemplos. Os comento.

1) Me sirven las dos, o mejor dicho, una fusión de las dos propuestas.

2) Macro Antonio: además de ayudarme me has aclarado la duda sobre objeto, evento, módulo... aunque tengo que seguir investigando acerca de las macros ;). Tu ejemplo se ejecuta perfectamente, pero necesito que también se puedan seleccionar las celdas distintas a ese rango.

3) Gerson Pineda: gracias también, por supuesto. La propuesta que me ofreces es perfecta, pero me faltaría lo que ofrece la de Macro Antonio, y es que si no se modifica la celda (o como muy bien me dices edita) también debería desplazarse en el orden establecido.

Como veis, las dos juntas funcionaría a la perfección. Para ilustrar un poco más mi "problema-dificultad" esta vez os dejo el ejemplo concreto en el que estoy trabajando.

El tema de darle a F2 o doble clic, lo controlo, pero el problema es que lo utiizaremos unas cinco personas y no toda ellas con conocimientos (aunque ya sé que son básicos). Estoy intentando hacerlo lo más básico posible.

Ejemplo adjunto:

¿Qué deberían hacer mis compañeros?

Abrir la hoja criterios (la he puesto la primera porque creo que así siempre es lo primero que se abre)

Selecionar clase y área.

Cumplimentar notas. (solamente se puede hacer en las celdas no protegidas, y precisamente éstas, son las que forman la secuencia de desplazamiento asociado a las teclas ENTER y/o tabulador, se modifique o no el valor de la celda). Lógicamente, es posible que se seleccione una celda manualmente (es decir, que no se cumplimente exclusivamente en el orden establecido). Sería ideal que desde la celda seleccionada, se continue la secuencia de desplazamiento.

:mad:¡Qué tostón acabo de dar no? Lo siento. Agradezco mucho vuestra ayuda.

Ejemplo para desplazamiento.rar

  • 3 weeks later...
publicado
Hola de nuevo. Ya he testeado vuestros ejemplos. Os comento.

1) Me sirven las dos, o mejor dicho, una fusión de las dos propuestas.

2) Macro Antonio: además de ayudarme me has aclarado la duda sobre objeto, evento, módulo... aunque tengo que seguir investigando acerca de las macros ;). Tu ejemplo se ejecuta perfectamente, pero necesito que también se puedan seleccionar las celdas distintas a ese rango.

3) Gerson Pineda: gracias también, por supuesto. La propuesta que me ofreces es perfecta, pero me faltaría lo que ofrece la de Macro Antonio, y es que si no se modifica la celda (o como muy bien me dices edita) también debería desplazarse en el orden establecido.

Como veis, las dos juntas funcionaría a la perfección. Para ilustrar un poco más mi "problema-dificultad" esta vez os dejo el ejemplo concreto en el que estoy trabajando.

El tema de darle a F2 o doble clic, lo controlo, pero el problema es que lo utiizaremos unas cinco personas y no toda ellas con conocimientos (aunque ya sé que son básicos). Estoy intentando hacerlo lo más básico posible.

Ejemplo adjunto:

¿Qué deberían hacer mis compañeros?

Abrir la hoja criterios (la he puesto la primera porque creo que así siempre es lo primero que se abre)

Selecionar clase y área.

Cumplimentar notas. (solamente se puede hacer en las celdas no protegidas, y precisamente éstas, son las que forman la secuencia de desplazamiento asociado a las teclas ENTER y/o tabulador, se modifique o no el valor de la celda). Lógicamente, es posible que se seleccione una celda manualmente (es decir, que no se cumplimente exclusivamente en el orden establecido). Sería ideal que desde la celda seleccionada, se continue la secuencia de desplazamiento.

:mad:¡Qué tostón acabo de dar no? Lo siento. Agradezco mucho vuestra ayuda.

Disculpa no mire tu ultimo comentario hasta ahora, pero o usas una cosa o la otra, o proteges la hoja o no

Saludos

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Current Donation Goals

    • Raised 0.00 EUR of 130.00 EUR target
  • Archivos

  • Estadísticas de descargas

    • Archivos
      187
    • Comentarios
      97
    • Revisiones
      29

    Más información sobre "Un juego del Rabino en Excel"
    Última descarga
    Por pegones1

    2    1

  • Crear macros Excel

  • Mensajes

    • Buenos días,  espero se encuentren bien de salud compañeros, Favor me podrían ayuda con lo siguientes como se podría hacer cuando tengo una tabla dinámica que  amedida que se aumente las columnas fechas con data un formula que se coloco al final busque o analice siempre la ultima fila y columna de la fecha. Coloco un ejemplo
    • @JSDJSD Excelentes, GRACIAS POR TU SOPORTE , me ayudo demasiado es exactamente lo que quería. 5 ESTRELLAS
    • 'Opción 1 Sub FiltrarSKUPorFecha(): Application.ScreenUpdating = False Dim ultimaFila As Long, fila As Long Dim diccionarioSKU As Object Dim listaEliminar As Object Dim fechaActual As String, fechaSiguiente As String Dim f As Variant With Sheets("Consolidado") ultimaFila = .Cells(.Rows.Count, 1).End(xlUp).Row ' Crear diccionarios para comparar SKU y almacenar filas a eliminar Set diccionarioSKU = CreateObject("Scripting.Dictionary") Set listaEliminar = CreateObject("Scripting.Dictionary") ' Recorrer desde la primera fila hasta la penúltima For fila = 2 To ultimaFila - 1 fechaActual = .Cells(fila, 1).Value fechaSiguiente = .Cells(fila + 1, 1).Value ' Solo comparar la fecha actual con la siguiente (inmediatamente superior) If fechaActual <> fechaSiguiente Then diccionarioSKU.RemoveAll ' Limpiar el diccionario antes de llenarlo ' Guardar los SKU de la fecha siguiente (solo de la siguiente) For f = fila + 1 To ultimaFila If .Cells(f, 1).Value <> fechaSiguiente Then Exit For diccionarioSKU(.Cells(f, 2).Value) = 1 Next f ' Revisar los SKU de la fecha actual y marcar los que deben eliminarse For f = fila To 2 Step -1 If .Cells(f, 1).Value <> fechaActual Then Exit For ' Solo eliminar si el SKU no está en la fecha siguiente If Not diccionarioSKU.exists(.Cells(f, 2).Value) Then listaEliminar(f) = 1 ' Marcar fila para eliminar después End If Next f ' Ya no es necesario seguir buscando después de comparar la primera y la siguiente fecha Exit For End If Next fila ' Eliminar las filas marcadas sin afectar el bucle principal For Each f In listaEliminar.keys .Rows(f).Delete Next End With MsgBox "Completado correctamente.", vbInformation End Sub 'Opción 2 Sub FiltrarSKUPorFecha1(): Application.ScreenUpdating = False Dim ultimaFila As Long, fila As Long Dim listaEliminar As Collection Dim fechaActual As String, fechaSiguiente As String Dim f As Variant, i As Long Dim SKUExiste As Boolean With Sheets("Consolidado") ultimaFila = .Cells(.Rows.Count, 1).End(xlUp).Row ' Inicializar la colección para marcar las filas a eliminar Set listaEliminar = New Collection ' Recorrer desde la primera fila hasta la penúltima For fila = 2 To ultimaFila - 1 fechaActual = .Cells(fila, 1).Value fechaSiguiente = .Cells(fila + 1, 1).Value ' Solo comparar la fecha actual con la siguiente (inmediatamente superior) If fechaActual <> fechaSiguiente Then ' Revisar los SKU de la fecha actual y marcar los que deben eliminarse For f = fila To 2 Step -1 If .Cells(f, 1).Value <> fechaActual Then Exit For ' Comprobar si el SKU está en la fecha siguiente SKUExiste = False For i = fila + 1 To ultimaFila If .Cells(i, 1).Value <> fechaSiguiente Then Exit For If .Cells(i, 2).Value = .Cells(f, 2).Value Then SKUExiste = True Exit For End If Next i ' Si el SKU no se encuentra en la fecha siguiente, marcar para eliminar If Not SKUExiste Then listaEliminar.Add f ' Marcar fila para eliminar después End If Next f ' Ya no es necesario seguir buscando después de comparar la primera y la siguiente fecha Exit For End If Next fila ' Eliminar las filas marcadas sin afectar el bucle principal For Each f In listaEliminar .Rows(f).Delete Next f End With MsgBox "Completado correctamente.", vbInformation End Sub   TABLA ELIMINAR.xlsm
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.