Necesito una macro que se ejecute al abrir un archivo excel que me pregunte si quiero abrir la hoja 1 o la hoja 2

Buenos días alguien que conozca una macro que se ejecute al abrir un archivo excel, que me pregunte si quiero abrir la hoja 1(Buscar) o la Hoja 2(capturar) Por ejemplo si selecciono la Hoja 1(Buscar) me lleve a la hoja que seleccione. Gracias

1 Respuesta

Respuesta
1

Debes colocar el siguiente código en el objeto ThisWorkbook de tu libro (ver imagen).

Por ahora no sale del bucle hasta que selecciones alguna de las 2 hojas, pero bien podrías enviarlo a una tercer hoja si quisieras.

Private Sub Workbook_Open()'x ElsamatildeDo While x = 0hojita = InputBox("INgrese el nombre de hoja para activar.", "CONFIRMAR HOJA")If hojita <> "Buscar" And hojita <> "Capturar" Then    MsgBox "No has indicado la hoja correcta. Intenta nuevamente."Else    x = 1    Sheets(hojita).SelectEnd IfLoopEnd Sub

Hola elsa gracias por responder a mi consulta si me funciono, la macro que me enviaste, pero habrá otra forma pero que no tengas que escribir el nombre de la hoja, solo seleccionarla como este ejemplo:

Gracias

Claro, pero no comentaste que ya tenias un Userform.

¿Y ya tenes algo programado allí? En el evento Open del libro solo tenes que colocar la llamada, imaginemos que se llame Userform1:

Privare Sub Workbook_Open()

Userform1.show

End Sub

Comentame si ya tenes programado el UF o si también lo necesitas y en ese caso que hacer si el usuario presiona la x para cerrarlo... puede ir a otra hoja o debemos impedir el cierre.?

Sdos!

Hola ElsaMaria te comento que solo tengo la estructura del userform aun no lo tengo programado y con respecto a la POR quiero que cuando se presione se cierre la hoja de excel como si fuera cancelar la apertura de la hoja. Te paso el código que tengo en la hoja 1(Buscar) y de la hoja 2(Capturar)

Hoja 1(Buscar)

Private Sub CommandButton1_Click()
Call Limpiar
End Sub
Private Sub CommandButton2_Click()
Call Buscar
End Sub

Codigo de la hoja 2(Capturar)

Private Sub CommandButton1_Click()
Call Captura
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rngFechas As Range

Set rngFechas = Range("B6,B14")

If Union(Target, rngFechas).Address = rngFechas.Address Then _
Call abrir_calendario
End Sub

Con respecto a la por quiero que cuando se presione se cierre la hoja como si fuera cancelar la operación

Supongo que estarás pensando en cerrar el ´libro'.

Lo recomendable es que tengas alguna hoja tipo portada o menú principal o solo en blanco para no acceder a los datos de las otras 2. En mi ejemplo la llamé Portada pero es opcional, sinó el libro se abrirá en la hoja que estuvo activa la última vez que se cerró el libro.

Entonces en el objeto ThisWorkbook va esto:

Private Sub Workbook_Open()
'opcional: seleccionar alguna hoja tipo portada o menú principal
'Sheets("Portada").select
'mostrar el formulario
UserForm1.Show
End Sub

Y en el Userform van estas otras (verifica si tus botones se llaman así o ajusta);

Dim marca As Byte   'servirá para indicar cómo se cierra el uf
Private Sub CommandButton1_Click()
'botón que llama a la hoja 'Buscar'
Sheets("Buscar").Select
marca = 1
Unload Me
End Sub
Private Sub CommandButton2_Click()
'botón que llama a la hoja 'Capturar'
Sheets("Capturar").Select
Unload Me
marca = 1
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
'al cerrar evalúo si se marcó alguna hoja sino se cierra la aplicación
If marca = 0 Then
    Unload Me
    Application.Quit
End If
End Sub

Sdos!

Es muy posible que si al seleccionar la hoja Captura, justo esté seleccionada alguna celda del rango se te ejecute el evento Selection_Change que tenés allí... si te ofrece alguna dificultad o necesitas que este evento no se ejecute, enviame el libro a mi correo para modificarlo. Mi correo aparece en el link a mi sitio.

te comento que cuando abro la hoja me aparece seleccionado Buscar y al darle click me abre esa hoja normal pero cuando le doy en Capturar me cierra el excel. otra cosa como le haria para que cuando me aparezca el userform no se vea de fondo la hoja (buscar). te voy a mandar el libro para que lo veas. Gracias

Ya te lo envíe Elsa muchas gracias por tu ayuda, espero tu correo con los cambios, si no te llega en la bandeja lo puedes checar en correo no deseado.

Ya encontré el error Elsa es que primero estaba el Unload Me y después Marca=1 entonces los invertí y ya funciono bien. Ahora el asunto es como se le haría para que no se viera el fondo de la hoja Buscar cuando me aparece el userform en vez del fondo me apareciera un fondo gris del excel cuando no tengo ninguna hoja abierta

Acabo de recibir el libro... ya te lo envío en un momento.

Disculpa por el cambio de orden,,,, fue correcta tu intervención ;)

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas