Excel - Macro para saltarme con el tabulador diferentes columnas

 
Vista:
sin imagen de perfil
Val: 11
Ha disminuido su posición en 3 puestos en Excel (en relación al último mes)
Gráfica de Excel

Macro para saltarme con el tabulador diferentes columnas

Publicado por Unexes (4 intervenciones) el 16/08/2019 16:08:37
Buenas a tod@s.

Pido disculpas por si este tema no se corresponde con este foro al tratarse mi solicitud de una macro para Excel.

Veréis lo he buscado en la red y no he hallado la respuesta, así que recurro a vuestros conocimientos.

Necesito que en una hoja de Excel al utilizar el tabulador para introducir datos me desplace en unas determinadas columnas saltándose las que no me interesan.

Tengo el siguiente código que cuando se trata de una sola columna la que hay que saltarse funciona bien pero cuando el rango a saltarse es de por ejemplo 3 columnas juntas funciona mal o lo que es lo mismo (una columna Si, una columna NO) funciona, pero (una columna Si tres columnas No) no funciona.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Static sRg As Range
    Dim ColumnOffset As Integer
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Union([B:B], [D:D], [F:F], [H:H], [I:I], [J:J])) Is Nothing Then
        With Target
        Application.EnableEvents = False
        If Not sRg Is Nothing Then
            If sRg.Column < .Column Then
                ColumnOffset = 1
            ElseIf .Column <> 1 Then
                ColumnOffset = -1
            End If
        Else
            ColumnOffset = 1
        End If
        .Offset(, ColumnOffset).Select
        Application.EnableEvents = True
        End With
    End If
    Set sRg = ActiveCell
End Sub

Con este código:
Las columnas: B-D-F-H (No tabula se las salta) es correcto
La columna: I (Si tabula) ES INCORRECTO
Las columnas: J (No tabula se la salta) es correcto

He cambiado la siguiente linea poniéndole un determinado rango y no me funciona a pesar de haber hecho un monton de pruebas:
1
If Not Intersect(Target, Union([B:B], [D:D], [F:F], ["H:J"])) Is Nothing Then
Como veis el rango lo he puesto para que las 3 columnas H-I-J me las salte con el tabulador, pero no me funciona

Tengo que decir que no encuentro la solución por mi mismo porque es mi primera macro y ando todavía empezando pero lo necesito para ahorrar tiempo en la introducción de datos.

¿Podéis ayudarme? Gracias a tod@s.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Andres Leonardo
Val: 3.831
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macro para saltarme con el tabulador diferentes columnas

Publicado por Andres Leonardo (1419 intervenciones) el 16/08/2019 20:12:26
Lo que pasa es que siempre estas sumando de 1 en los saltos dondes dice offset +1 el tema es que deberias considerar que si donde llega es H no salte 1 si no 3
espero te ayude ya que si puedes validar cual es donde intersecta...

mira los comentarios en el codigo abajo espero esto te ayude entender el por que ...
Yo no conozco mucho el tema del offset .. por eso lo qeu hago es yo mismo obtener y colocar las celdas donde debe de saltar...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
If Not Intersect(Target, Union([B:B], [D:D], [F:F], [H:H], [I:I], [J:J])) Is Nothing Then
    With Target
    Application.EnableEvents = False
    If Not sRg Is Nothing Then
        If sRg.Column < .Column Then
         ColumnOffset = 1  ' te dice que  la colimna es la  1
        ElseIf .Column <> 1 Then
         ColumnOffset = -1 ' te dice que  la colimna es  salte 1 o -1
        End If
    Else
     ColumnOffset = 1
    End If
    .Offset(, ColumnOffset).Select
    Application.EnableEvents = True
    End With
End If
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andres Leonardo
Val: 3.831
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macro para saltarme con el tabulador diferentes columnas

Publicado por Andres Leonardo (1419 intervenciones) el 16/08/2019 20:29:32
Con este codigo saltas entre celdas, podrias intentar hacer hacer de columnas, y si es la columna la dejas si no la saltas...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim tabArray As Variant
    Dim i As Long
    tabArray = Array("B5", "C6", "D7", "E8")
    Application.ScreenUpdating = False
    For i = LBound(tabArray) To UBound(tabArray)
        If tabArray(i) = Target.Address(0, 0) Then
            If i = UBound(tabArray) Then
                Me.Range(tabArray(LBound(tabArray))).Select
            Else
                Me.Range(tabArray(i + 1)).Select
            End If
        End If
    Next i
    Application.ScreenUpdating = True
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 11
Ha disminuido su posición en 3 puestos en Excel (en relación al último mes)
Gráfica de Excel

Macro para saltarme con el tabulador diferentes columnas

Publicado por Unexes (4 intervenciones) el 16/08/2019 21:42:09
Gracias por la ayuda.

Veras el segundo código no es lo que busco ya que lo he probado y lo que hace es saltar entre diferentes celdas, al introducir datos en una de ellas y pulsar sobre el tabulador salta a la siguiente ejemplo si introduzco datos en C6 y tabulo salta a D7.

VER IMAGEN
Lo que necesito es que al pulsar el tabulador estando por ejemplo en A1 no salte al tabular a B1 sino a C1 y después no salte al tabular a D1 que es la siguiente columna ni a E1 ni a F1 sino que quiero que salte al tabular a G1 desde C1 haya o no introducido datos (esto es un ejemplo podría tratarse de otras columnas).
VER IMAGEN

En cuanto a los comentarios que me pones sobre el código que puse, la verdad es que los entiendo y ahí creo que podría residir el problema, pero no se como arreglarlo ya que he probado de mil formas para ver si por el sistema de prueba error podría encontrar la solución pero al ser novato en las macros para Excel y mirar tantas cosas en la red me he hecho un lió y no se como hacerlo.

Imagen-hoja-Excel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Hector Madriz
Val: 857
Bronce
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macro para saltarme con el tabulador diferentes columnas

Publicado por Hector Madriz (137 intervenciones) el 17/08/2019 04:12:47
Buen dia, presumo que en las celdas que no tendran foco seran celdas con formulas o inutilizadas, siendo asi simplemente bloquea todas las celdas, luego desbloquea las celdas que pueden tener foco y luego protege la hoja. Solo podras desplazarte por las que estan desbloqueadas...

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 11
Ha disminuido su posición en 3 puestos en Excel (en relación al último mes)
Gráfica de Excel

Macro para saltarme con el tabulador diferentes columnas

Publicado por Unexes (4 intervenciones) el 17/08/2019 11:52:31
Buenos días.

Supongo que no me he explicado bien y es por eso que voy a intentar clarificarlo.

El sistema de desbloquear las celdas de todas las columnas por donde me quiero mover y luego proteger la hoja para moverme con el tabulador por las columnas desbloqueadas ya lo se hacer, pero es tedioso con hojas muy grandes, lo que quiero es hacerlo con una macro creo que es mas profesional y ademas quiero aprender.

En vuestras respuestas me habláis de celdas y de su contenido y yo no me quiero mover con el tabulador por determinadas celdas dependiendo de si tienen o no foco o si tienen o no cualquier tipo de contenido (imaginad una hoja totalmente en blanco, las celdas no contienen nada)

Lo que necesito es desplazarme al tabular dentro de la linea donde me encuentre, por las diferentes columnas pero no de forma contigua como lo hace Excel por defecto.
Excel por defecto si estoy en la A1 el tabulador se desplaza de la (A1, a B1, a C1, a D1, a E1, a F1, a G1, a H1, etc...)
lo que necesito no es eso es desplazarme saltándome al tabular determinadas columnas.

Lo que necesito por ejemplo es que:
Si estoy en cualquier linea en la columna: A tabulo y paso directamente a la columna C (me he saltado 1 columna la B)
desde la columna C tabulo y paso directamente a la columna G (me he saltado 3 columnas la D, E, F)
desde la columna G tabulo y paso directamente a la columna J (me he saltado 2 columnas la H, I)
y así poder hacer cualquier combinación colocando en la macro los rangos de columnas a saltarse.

El código que puse al principio funciona siempre que el salto sea igual a 1 columna, y por lo que no me vale o no me funciona bien ese código es que a veces el salto tiene que ser de 2 ó 3 ó 4 columnas y ahí es donde falla y donde no se como solucionarlo

Espero haber explicado mejor lo que necesito, y gracias por vuestra paciencia y ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Hector Madriz
Val: 857
Bronce
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macro para saltarme con el tabulador diferentes columnas

Publicado por Hector Madriz (137 intervenciones) el 17/08/2019 16:00:35
Buen dia, ok siendo para fines de aprendizaje y no de funcionalidad es otra cosa; ahora bien aun cuando no consideras el artificio de bloqueo te aclaro:

* Se desbloquea las celdas o toda la columna que seran entradas de datos indiferentemente tengan o no contenido (Seleccionas toda columna con un solo clic)

* Si estan desbloquedas las columnas A C F y G el tabulador saltara todas las columnas que sean diferente (depende lo q permites en la hoja).

* El hecho de que un libro contenga código VBA no quiere decir que sea mas profesional al que no lo contiene; puede tener mas bien una evaluación contraria cuando se intenta inventar la rueda. Ejemplo: Desarrollo una macro o función que hace "exactamente" lo que hace la función BUSCARV si hace lo mismo por que no usar la funcion propia de MS Excel, por tanto es ineficiente aun cuando puede ser eficaz.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 11
Ha disminuido su posición en 3 puestos en Excel (en relación al último mes)
Gráfica de Excel

Macro para saltarme con el tabulador diferentes columnas

Publicado por Unexes (4 intervenciones) el 18/08/2019 23:17:54
Buenas noches a tod@s.

Gracias por tu ayuda y estoy de acuerdo contigo en parte.

Dejo claro que lo que solicite en la ayuda es "Macro para saltarme con el tabulador diferentes columnas"

Contestando a tu ayuda veo que me indicas la opción que ya indique que sabia hacerla pero que no era lo que buscaba:

En cuanto a lo de inventar la rueda no lo pretendo y ademas para que, si ya existe y de momento cumple su función, aunque a lo largo de los cientos de años creo que ha cambiado bastante gracias a aquellos que les gusta explorar, experimentar, modificar, probar etc... cosas nuevas o simplemente una forma diferente de hacerlas, así que como ya tenemos una forma de hacerlo en Excel para que vamos a complicarnos la vida y intentar hacerlo de otra forma.

Veréis me encanta la gente que coge en su tiempo libre un código cualquiera o cualquier cosa que funciona bien y intenta mejorarlo en beneficio de todos los demás o simplemente hace uno nuevo con alguna mejora sustancial o de forma diferente, gracias a esas personas progresamos y los celebritos que hacen determinados programas lo incorporan en sus nuevas versiones, (por ejemplo ya no utilizamos el Windows 3.1 aunque en su momento funcionara bien y necesitara pocos recursos, ni tampoco utilizamos las bombillas de tungsteno aunque cumplían su misión, eso si, en el momento actual sigue siendo Windows y siguen siendo bombillas).

Me gusta experimentar y buscar otras alternativas, así aprendo y quiero poder hacer los saltos de columnas con una macro porque no he encontrado ninguna en la red que lo haga, aunque estoy seguro que si sigo buscando debe haber alguna. Con el código que puse al principio solo lo hace a medias, pero me gustaría conseguirlo y si alguien dice o pone aquí como se hace, estudiare ese código hasta comprenderlo y veré porque no he sido capaz de hacerlo de momento por mi mismo y si no es así aunque tarde un tiempo cuando lo consiga por mi mismo lo pondré aquí, es posible que luego no le sirva o lo utilice nadie pero a mí me habrá servido para encontrar otra manera de hacerlo.

Muchas gracias a tod@s.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Hector Madriz
Val: 857
Bronce
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macro para saltarme con el tabulador diferentes columnas

Publicado por Hector Madriz (137 intervenciones) el 19/08/2019 17:03:16
Buen día, la curiosidad tecnológica y científica es muy necesaria de lo contrario no tendríamos los avances que hoy en día tenemos; lo de "no inventar la rueda" en Venezuela es una expresión que se usa comúnmente para enfatizar soluciones simples/fáciles, ante todo la intención es ayudar.

Esta es la solución que inicialmente indique pero en una Macro:
1
2
3
4
5
If ActiveSheet.Name = "Hoja1" And ActiveSheet.ProtectContents = False Then
   ActiveSheet.Cells.Locked = False
   ActiveSheet.Range("B:B,D:D,F:F,H:H,I:I,J:J").Locked = True
   ActiveSheet.Protect UserInterfaceOnly:=True
End If

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Andres Leonardo
Val: 3.831
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macro para saltarme con el tabulador diferentes columnas

Publicado por Andres Leonardo (1419 intervenciones) el 19/08/2019 18:14:41
Excelente respuesta estuve leyendo en otro foro y es lo que se hace las celdas o coluimnas complestas desbloqueadas son las que tienen el foco las demas al estar bloqueadas no permiten foco

Saludos ty muchas gracias Hector por

Espero que al amigo que hizo la pregunta le sirva esta respuesta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar