A continuación les comparto el código que nos permite navegar registro por registro de una hoja con fatos en un Userform.
Con programación VBA Excel es prácticamente sencillo. Para ello debemos seguir los siguientes pasos:
- Crear una hoja con datos.
- Ingresar al editor VBA excel.
- Insertar un formulario con los componentes:
- 7 Etiqueta (Label1,2,3,4,5,6 y 7)
- 6 Caja de texto (TextBox1, 2,3,4,5,6 y7)
- 1 Cuadro combinado (ComboBox1)
- 4 Botones de comando (CommandButton1,2,3,4)
- Escribir el siguiente código.
'Declaramos variables publicas que manejaremos en todo el formulario
Public intvalor As Integer
Public intregistros As Integer
Private Sub UserForm_Initialize()
'Contamos el numero de registros en la hoja 1
intregistros = Hoja1.Range("A1").CurrentRegion.Rows.Count
End Sub
Private Sub CommandButton1_Click()
intvalor = 2
Me.TextBox1.Text = Hoja1.Cells(2, 1)
Me.TextBox2.Text = Hoja1.Cells(2, 2)
Me.TextBox3.Text = Hoja1.Cells(2, 3)
Me.ComboBox1.Text = Hoja1.Cells(2, 4)
Me.TextBox4.Text = Hoja1.Cells(2, 5)
Me.TextBox5.Text = Hoja1.Cells(2, 6)
Me.TextBox6.Text = Hoja1.Cells(2, 7)
Me.CommandButton1.Enabled = False
Me.CommandButton2.Enabled = False
Me.CommandButton3.Enabled = True
Me.CommandButton4.Enabled = True
End Sub
Private Sub CommandButton2_Click()
If intvalor = 2 Then
Me.CommandButton1.Enabled = False
Me.CommandButton2.Enabled = False
Me.CommandButton3.Enabled = True
Me.CommandButton4.Enabled = True
MsgBox "Estas en el primer registro", vbOKOnly + vbInformation, "Primer registro"
Else
intvalor = intvalor - 1
Me.TextBox1.Text = Hoja1.Cells(intvalor, 1)
Me.TextBox2.Text = Hoja1.Cells(intvalor, 2)
Me.TextBox3.Text = Hoja1.Cells(intvalor, 3)
Me.ComboBox1.Text = Hoja1.Cells(intvalor, 4)
Me.TextBox4.Text = Hoja1.Cells(intvalor, 5)
Me.TextBox5.Text = Hoja1.Cells(intvalor, 6)
Me.TextBox6.Text = Hoja1.Cells(intvalor, 7)
Me.CommandButton3.Enabled = True
Me.CommandButton4.Enabled = True
End If
End Sub
Private Sub CommandButton3_Click()
intvalor = intvalor + 1
If intvalor = intregistros + 1 Then
Me.CommandButton1.Enabled = True
Me.CommandButton2.Enabled = True
Me.CommandButton3.Enabled = False
Me.CommandButton4.Enabled = False
MsgBox "Estas en el último registro", vbOKOnly + vbInformation, "Ultimo registro"
Else
Me.TextBox1.Text = Hoja1.Cells(intvalor, 1)
Me.TextBox2.Text = Hoja1.Cells(intvalor, 2)
Me.TextBox3.Text = Hoja1.Cells(intvalor, 3)
Me.ComboBox1.Text = Hoja1.Cells(intvalor, 4)
Me.TextBox4.Text = Hoja1.Cells(intvalor, 5)
Me.TextBox5.Text = Hoja1.Cells(intvalor, 6)
Me.TextBox6.Text = Hoja1.Cells(intvalor, 7)
End If
If intvalor > 2 Then
Me.CommandButton1.Enabled = True
Me.CommandButton2.Enabled = True
End If
intregistros = Hoja1.Range("A1").CurrentRegion.Rows.Count
End Sub
Private Sub CommandButton4_Click()
'Contamos el numero de registros en la hoja 1
intregistros = Hoja1.Range("A1").CurrentRegion.Rows.Count
intvalor = intregistros
Me.TextBox1.Text = Hoja1.Cells(intregistros, 1)
Me.TextBox2.Text = Hoja1.Cells(intregistros, 2)
Me.TextBox3.Text = Hoja1.Cells(intregistros, 3)
Me.ComboBox1.Text = Hoja1.Cells(intregistros, 4)
Me.TextBox4.Text = Hoja1.Cells(intregistros, 5)
Me.TextBox5.Text = Hoja1.Cells(intregistros, 6)
Me.TextBox6.Text = Hoja1.Cells(intregistros, 7)
Me.CommandButton1.Enabled = True
Me.CommandButton2.Enabled = True
Me.CommandButton3.Enabled = False
Me.CommandButton4.Enabled = False
End Sub
Navegar por registros en userform
Mensaje cuando llegamos al primer registro
Mensaje cuando llegamos al ultimo registro
Hoja 1 con datos
Dejen sus comentarios para saber que voy bien, y seguir compartiendo codigos
ResponderBorrar