Cambiar de entre hojas de excel con una macro

Hola espero te encuentres bien y disculpa la molestia de la pregunta.
Resulta que estoy desarrollando un proyecto en Excel en el cual tengo una lista de números correspondientes a el numero de identificcacion de los empleados y de acuerdo a el numero que yo seleccione en una lista desplegable quisiera saber si con una una macro me puedo ir a la hoja que le corresponde a este número las hojas se llamarían igual que los números de la lista.
Espero que no sea muy complicada mi pregunta.
De antemano gracias. Si nesecitaces más información para esto estoy a tus ordenes

1 respuesta

Respuesta
1
Digamos que tu pregunta fue medianamente complicada.
En realidad, lo complicado es detectar que seleccionaste otra opción de la lista desplegable.
Asumí que tal lista la armaste con la utilidad de "Validación de datos" que te permite dejar en la misma celda el valor elegido.
El único evento capaz de detectar tal cambio es el cálculo de la hoja (Worksheet_Calculate) para lo cual es necesario que exista por lo menos una celda con fórmulas en la hoja. Si así no fuera, coloca una cualquiera. Por ejemplo: =B5
Precisamente, supondré que en esa celda estará tu lista desplegable y, por tanto, el numero que indica la hoja donde deberá ir.
De todos modos encontrarás una variable al principio de la macro que te permitirá cambiar la dirección a la celda donde realmente tengas la selección de lista.
Para que funcione, activa el editor de Visual Basic (presiona Alt+F11) y busca
la hoja donde quieres que esto ocurra (donde harás la selección de datos). Da doble click sobre ella.
Copia el código siguiente y pégalo en el panel desplegado a la derecha de su Editor de Visual Basic:
Private Sub Worksheet_Calculate()
Static NumAnt
'Angel, cambia el contenido de esta variable, por la celda donde tiene la lista de validación:
Selcell = "B5"
'------------- gracias.
With ActiveCell
If .Address(False, False) = Selcell Then
If .Value <> NumAnt Then
NumAnt = .Value
On Error Resume Next
Set SheetEx = ActiveWorkbook.Sheets(NumAnt)
If Err <> 0 Then
MsgBox "La hoja " & NumAnt & Chr(10) & "NO existe en este libro " & Chr(10) & "Creala y luego podras seleccionarla", vbInformation, "HOJA INEXISTENTE"
Exit Sub
Else
On Error GoTo 0
SheetEx.Select
End If
Set SheetEx = Nothing
End If
End If
End With
End Sub
Cierra el Editor y graba el archivo.
Cada vez que la hoja se recalcule, esta macro controla que la celda indicada esté seleccionada y comparará su valor actual con uno que guarda en memoria. Con esto, sabrá si hubo un cambio en la selección. Luego hará un control adicional de existencia de tal hoja para evitar un posible error en tiempo de ejecución. Si existe te llevará a ella. Caso contrario te mostrará un mensaje.
Espero que esto ayude a resolver tu problema. Si así fuera, agradeceré un comentario y que la finalices.
(Recuerda que mantener cierto número de respuestas pendientes impide que otros usuarios puedan consultarme)
En caso contrario, puedes preguntarme nuevamente
aclarando qué entendí mal o qué faltó.
Hola fejoal:
Muchísimas gracias tu respuesta estuvo excelente y me va a servir muchísimo también para otros proyectos.
Quedo a tus ordenes. Muchísimas gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas