Necesitaría saltar de una celda a otra, determinada con "Enter" luego de introducir datos

De Todoexpertos, necesito saltar de una celda a otra predeterminada, con "enter" y luego de introducir datos en la celda en cuestión, según este orden: C9, E9, N9, L9, C10, C11, C16, C17, C18, F11, I11, B12, G12, I12, L12, E13, J13, N13, E14, J14, L15, L16, L18, E20

Y que con el ultimo "enter" vuelva a la primera celda.

No lo quiero Hacer desde una macro sino desde el código de la hoja.

No se si me explique correctamente.

2

2 Respuestas

5.857.350 pts. Me voy x tiempo. Necesito hacer otras cosas, descansar...

Debes insertar esta macro en la hoja donde están esas celdas

Private Sub Worksheet_Change(ByVal Target As Range)
Dim celdas As Variant
Dim i As Integer
celdas = Array("C9", "E9", "N9", "L9", "C10", "C11", "C16", _
         "C17", "C18", "F11", "I11", "B12", "G12", "I12", "L12", _
         "E13", "J13", "N13", "E14", "J14", "L15", "L16", "L18", "E20")
For i = 0 To UBound(celdas)
   If Not Intersect(Target, Range(celdas(i))) Is Nothing Then
     If i < UBound(celdas) Then
       Range(celdas(i + 1)).Select
     Else
       Range(celdas(0)).Select
     End If
   End If
Next
End Sub

Y eso es todo, espero que te sirva y lo entiendas. Si no es así preguntaúntame. Y si ya está bien no olvides puntuar.

Sr Experto, he probado la codificación que me fuera enviado y funciona perfectamente, pero resulta que tengo un inconveniente, necesitaría, que aunque no cargue datos en las celdas seleccionadas se pueda saltar a la siguiente, por el momento, solo si cargo algo en la celda pasa a la otra. Desde ya muchísimas gracias por su aporte, y disculpe si anteriormente me exprese en forma incompleta para plantear mi necesidad.

Saludos y aguardo su respuesta.

Lo que pides no tiene solución fácil. Excel no tiene los eventos KeyDown, KeyPress y KeyUp referidos a la pulsación de teclas. LOs tiene referidos a los controles de un formulario, pero no a las celdas de la hoja.

Se le puede medio engañar simulando la pulsación de Enter cuando nos hayamos situado en la celda de abajo de una de esas celdas. El problema es que no te vas a poder situar en esas celdas de abajo porque te mandará a la siguiente celda.

Tu verás si te sirve de esta forma. Si no, se podría hacer una macro que activase o desactivase esta macro según te conviniera en cada momento, no sería difícil.

Fíjate que el nombre de la subrutina es otro, debes copiar todo esto y la otra borrarla o ponerle comentarios a todo para que no actúe.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Celdas As Variant
Dim i As Integer
Dim Posicion As Range
Celdas = Array("C9", "E9", "N9", "L9", "C10", "C11", "C16", _
       "C17", "C18", "F11", "I11", "B12", "G12", "I12", "L12", _
       "E13", "J13", "N13", "E14", "J14", "L15", "L16", "L18", "E20")
If Target.Row = 1 Then Exit Sub
  Set Posicion = Target.Offset(-1, 0)
  For i = 0 To UBound(Celdas)
    If Not Intersect(Posicion, Range(Celdas(i))) Is Nothing Then
      Application.EnableEvents = False
      If i < UBound(Celdas) Then
        Range(Celdas(i + 1)).Select
      Else
        Range(Celdas(0)).Select
      End If
      Application.EnableEvents = True
    End If
  Next i
End Sub

Y si necesitas lo que te decía pídemelo, pero ahora tengo que dejar un rato largo el ordenador.

muchas gracias, deje con la solución anterior, solo que dejare un instructivo a los usuarios para que cuando ni hayan datos a cargar en las celdas, ingresen (-).

¿Y SI QUEREMOS que de la columna A pase a la B y de vuelta a la A?

Array sólo admite algo definido, ¿verdad?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas