Tengo un formulario, como hago a través de un botón llamar las hojas y que se active esa hoja.

Y cuando se active trabajar en ella, luego cerrarla y llamar otra y hacer lo mismo.

Mi archivo consta de un Libro de excel y varias hojas denominadas por los meses del año, con un formulario con el cual ingreso y modifico la información, pero no he podido hacer un botón que llame el mes y pueda trabajar en el, porque siempre me lleva a la primera hoja.

Muchas Gracias

1 respuesta

Respuesta
1

Agrega un combobox a tu formulario.

Agrega el siguiente código en tu formulario

Private Sub ComboBox1_Change()
    Sheets(ComboBox1.Text).Select
End Sub
Private Sub UserForm_Activate()
    For Each h In Sheets
        ComboBox1.AddItem h.Name
    Next
End Sub

cambia en la macro combobox1 por nombre de tu combo

Perdon por la Ignorancia cual seria el combo, yo tengo un libro y cada hoja en el libro se llama por un mes del año, perdon pero no se que hacer.

Muchas Gracias

Dices que tienes un formulario, agrega un control: combobox1

Buenas Ante todo muchas Gracias por las respuestas, voy en esto si, ya tengo el formulario ya le cree el combobox, ahora ya me aparecen en el combobox los nombres de las hojas, doy click en alguna de ellas, y me coloca en la hoja que doy click. Pero lo que me esta sucediendo es que al trabajar en esa hoja no me deja, me envía a la primera hoja.

Envío lo que tengo para que por favor me lo revise.

muchas Gracias

Public ubica As String
Public control As Integer
Public filalibre As Integer
Dim dato As String
Private Sub cmdCancelar_Click()
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
TextBox6 = ""
TextBox7 = ""
TextBox1.SetFocus
End Sub
Private Sub cmdModificar_Click()
Sheets("ENERO").Select
Range(ubica).Value = TextBox1
Range(ubica).Offset(0, 2).Value = TextBox2
Range(ubica).Offset(0, 2).Value = TextBox3
Range(ubica).Offset(0, 3).Value = TextBox4
Range(ubica).Offset(0, 4).Value = TextBox5
Range(ubica).Offset(0, 5).Value = TextBox6
Range(ubica).Offset(0, 6).Value = TextBox7
cmdCancelar_Click
End Sub
Private Sub CommandButton1_Click()
rango = ubica & ":A" & filalibre
Set midato = ActiveSheet.Range(rango).Find(dato, LookIn:=xlValues, LookAt:=xlWhole)
If Not (midato) Is Nothing Then
ubica = midato.Address(False, False)
TextBox2.Value = Range(ubica).Offset(0, 2).Value
TextBox3.Value = Range(ubica).Offset(0, 3).Value
TextBox4.Value = Range(ubica).Offset(0, 4).Value
TextBox4.Value = Range(ubica).Offset(0, 5).Value
TextBox4.Value = Range(ubica).Offset(0, 6).Value
TextBox4.Value = Range(ubica).Offset(0, 7).Value
Else
cmdModificar.Enabled = False
cmdEliminar.Enabled = False
End If
Set midato = Nothing
End Sub
Private Sub CommandButton2_Click()
'Por Dam
Dim cell As Range
Dim Rng As Range
asesor = TextBox8
ActiveSheet.AutoFilterMode = False
Range("A1:G250").Select
If asesor = "" Then
MsgBox "No hay datos a filtrar, se seleccionan todos"
Else
'Filtra datos por fecha
ActiveSheet.AutoFilterMode = False
Range("A1:G250").Select
Selection.AutoFilter
Selection.AutoFilter Field:=3, Criteria1:=asesor
End If
ufila = Range("A" & Rows.Count).End(xlUp).Row
If ufila = 2 Then
MsgBox "No se encontraron datos a filtrar"
ListBox1.Clear
Else
'Prepara el rango de datos filtraso
With ThisWorkbook.Worksheets("ENERO")
'Set Rng = .Range("A1", .Range("A1").End(xlDown)).SpecialCells(xlCellTypeVisible)
Set Rng = .Range("A1", .Range("A" & Rows.Count).End(xlUp)).SpecialCells(xlCellTypeVisible)
End With
asesor = ""
End If
End Sub
Private Sub CommandButton3_Click()
Name1 = InputBox("INGRESE EL MES")
Sheets(Name1).Select
End Sub
Sub ir()
Name1 = InputBox("Ingresa el Nombre de la Hoja a Ubicar", "AVISO")
Sheets(Name1).Select
End Sub
Private Sub TextBox1_AfterUpdate()
cmdModificar.Enabled = True
cmdEliminar.Enabled = True
Sheets("ENERO").Select
filalibre = Range("A2").End(xlDown).Offset(1, 0).Row 'la variable filalibre guarda el nro. de la primer celda vacía.
dato = TextBox1
rango = "A2:A" & filalibre
Set midato = ActiveSheet.Range(rango).Find(dato, LookIn:=xlValues, LookAt:=xlWhole)
If Not (midato) Is Nothing Then
ubica = midato.Address(False, False)
TextBox2.Value = Range(ubica).Offset(0, 1).Value
TextBox3.Value = Range(ubica).Offset(0, 2).Value
TextBox4.Value = Range(ubica).Offset(0, 3).Value
TextBox5.Value = Range(ubica).Offset(0, 4).Value
TextBox6.Value = Range(ubica).Offset(0, 5).Value
TextBox7.Value = Range(ubica).Offset(0, 6).Value
Else
cmdModificar.Enabled = False
cmdEliminar.Enabled = False
End If
Set midato = Nothing
End Sub
Private Sub cmdAgregar_Click()
Sheets("ENERO").Select
Cells(filalibre, 1).Value = TextBox1
Cells(filalibre, 2).Value = TextBox2
Cells(filalibre, 3).Value = TextBox3
Cells(filalibre, 4).Value = TextBox4
Cells(filalibre, 5).Value = TextBox5
Cells(filalibre, 6).Value = TextBox6
Cells(filalibre, 7).Value = TextBox7
cmdCancelar_Click
End Sub
Private Sub cmdEliminar_Click()
Sheets("enero").Select
Range(ubica).EntireRow.Delete
cmdCancelar_Click
End Sub
Private Sub cmdAnterior_Click()
TextBox1.Value = Range(ubica).Offset(-1, 0).Value
TextBox1_AfterUpdate
End Sub
Private Sub cmdSiguiente_Click()
TextBox1.Value = Range(ubica).Offset(1, 0).Value
TextBox1_AfterUpdate
End Sub
Private Sub cmdPrimero_Click()
TextBox1.Value = Range("A2").Value
TextBox1_AfterUpdate
End Sub
Private Sub cmdUltimo_Click()
TextBox1.Value = Cells(filalibre - 1, 1).Value
TextBox1_AfterUpdate
End Sub

Te lleva a la primera hoja porque tienes en tu código esto:

Sheets("ENERO").Select

Esa instrucción la tienes varias veces, busca esa instrucción y bórrala todas las veces que la encuentres.

Vuelve a probar.

No olvides finalizar la pregunta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas