Volver a la hoja que usaba

Tengo una complicación con la programación de una macro, pues no logro que vuelva a la hoja anterior en uso. Necesito diseñar una macro que si estoy trabajando en la hoja1 y paso a la hoja 2, pueda volver a la hoja1; y si pasé de la hoja20 a la hoja15, pueda volver a la hoja20. ¿Alguna idea?

2 Respuestas

Respuesta
2

¿Cuál es la finalidad de regresar a la hoja anteriormente seleccionada?

Cuál es tu idea, estás en la 20, luego seleccionas la hoja 15. Estando en la hoja 15 quieres presionar un botón para que te lleve a la hoja anteriormente seleccionada, en este ejemplo te llevará a la 20. Entonces en la hoja 20 también tendrás un botón que si lo presionas te va a llevar a la hoja 15.

¿O cómo te imaginas lo que quieres hacer?

Yo me lo imaginé o lo supongo en botones, pero cuál es tu idea.

Hola Dante.

Tal como indicas, he estado intentado programar mediante botones, pero no requiero dicha función en todas las hojas de Excel. Te explico: la planilla Excel en la que trabajo, tiene asociados permisos a distintos usuarios según el rol que tenga (por ejemplo, hay usuarios que serán "administradores", otros "operadores", otros "consultores", etc.), los cuales se validan mediante información ingresadas a algunos TextBox dentro de la hoja de inicio (en la Hoja1). Si el usuario que ingresa a la planilla es por ejemplo, un "administrador", tiene distintos botones en la Hoja2 que le permiten hacer una serie de tares, mientras que el usuario que sea validado como "operador", tiene su propio menú y botones en la Hoja3. En la Hoja4 hay una tabla con información que ambos pueden necesitar consultar o trabajar, pero no pueden acceder con los mismos permisos; el "administrador" debe sólo ver la información (para lo que apliqué el ActiveSheet.Protect sin problemas), mientras que el operador debe poder editar algunas columnas con información, por lo que sólo de desbloquean las columnas que debe editar. Me han solicitado que la Hoja4 (donde ambos tienen acceso), pueda colocar un botón de "Volver", para poder retornar al menú. Sin embargo, el "operador" debe volver a la hoja3, mientras que el "administrador" debe volver a la Hoja2. En el fondo "Volver" depende de quién esté trabajando en el documento.

Por eso requiero volver a la hoja que estaba activada previamente. No puedo fijar el nombre de la hoja dentro de la programación del botón, porque el "operador" podría volver al menú del "administrador", o vice versa, lo que no puede ocurrir.

Ingresadas a algunos TextBox dentro de la hoja de inicio (en la Hoja1)

Según esa descripción y asumiendo que es un Textbox Control ActiveX, prueba el siguiente ejemplo para el botón "volver" de la hoja4:

Sub BotonVolver()
  Select Case Sheets("Hoja1").TextBox1.Value
    Case "administrador"
      Sheets("Hoja2").Select
    Case "operador"
      Sheets("Hoja3").Select
    Case "consultor"
      Sheets("Hoja5").Select
  End Select
End Sub

Prueba y me comentas si es parte de la solución.

Esto:

Me han solicitado que la Hoja4 (donde ambos tienen acceso), pueda colocar un botón de "Volver", para poder retornar al menú. Sin embargo, el "operador" debe volver a la hoja3, mientras que el "administrador" debe volver a la Hoja2. En el fondo "Volver" depende de quién esté trabajando en el documento.

Se contrapone a esto:

Por eso requiero volver a la hoja que estaba activada previamente

Yo supongo que se contrapone, porque no conozco el diseño de tus hojas. Entonces no sé a qué te refieres con "volver a la hoja que estaba activada previamente". Si el administrador estaba en la hoja5, va a la hoja4, presiona el botón, quieres que vaya a la hoja5 o que vaya a la hoja2.

En una descripción dices: "el "administrador" debe volver a la Hoja2" y en la otra descripción dices: "volver a la hoja que estaba activada previamente"


Revisa la macro que te puse y me comentas exactamente qué necesitas.

Respuesta
1

[Hola Cintia. Prueba con lo siguiente a ver si es lo que necesitas.

Coloca el siguiente código en los eventos de Thisworkbook.

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
HojaAnterior = Sh.Name
End Sub

Y el siguiente lo pones en un Módulo.

Public HojaAnterior As String
Sub Anterior()
Application.Sheets(HojaAnterior).Select
End Sub

Ahora, por ejemplo, si estás en la hoja1 y seleccionas la hoja15, si ejecutas la macro te mostrará de nuevo la hoja1.

Salu2 Carlos Arrocha

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas