Botón siguiente en formulario Excel
Estoy creando un formulario en Excel con varios ejemplos que me he encontrado en varias páginas.
La idea es que al momento de hacer doble click en alguna celda de la columna "A", se abra el formulario y se carguen los datos de esa fila en el formulario, posterior a esto, al hacer click en el botón "Siguiente" o "Anterior" se carguen en el formulario los datos respectivos.
El problema que tengo es, por ejemplo, si hago doble clic en el penúltimo registro(se cargan los datos en el formulario) y al hacer click sobre el botón "Siguiente" no me muestra los datos del siguiente, sino que me muestra los datos del segundo registro de la tabla y si continuo haciendo click en el botón "Siguiente" si se cargan los datos en el orden correcto.
Lo mismo pasa si hago doble click en cualquier registro de la tabla, todos se devuelven al segundo registro.
Código de la hoja Excel:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
Set Activador = Range("A2:A10000") ' También puedes utilizar el nombre de un rango que exista en la hoja activa
If Not Intersect(Target, Activador) Is Nothing Then
UserForm1.Show
Unload UserForm1
UserForm1.Show
End If
End SubCódigo del formulario:
'variables a emplear entre los diferentes procedimientos más abajo
Dim fila As Long
Dim NumItems As Long
Public Sub cmdCargar_Click()
' al hacer doble click se cargan los datos de la fila en el formulario
Txtid.Text = Worksheets("Hoja1").Cells(ActiveCell.Row, 1).Value
TxtNombre.Text = Worksheets("Hoja1").Cells(ActiveCell.Row, 2).Value
TxtApellido.Text = Worksheets("Hoja1").Cells(ActiveCell.Row, 3).Value
txtEdad.Text = Worksheets("Hoja1").Cells(ActiveCell.Row, 4).Value
txtSexo.Text = Worksheets("Hoja1").Cells(ActiveCell.Row, 5).Value
End Sub
Private Sub UserForm_Initialize()
Dim filaIni As Long
'damos valores de partida
fila = 2
'rellenamos el formulario
RecuperaDatos (fila)
'y determinamos el número total de registros
NumItems = WorksheetFunction.CountA(Range("A:A")) - 1
Call cmdCargar_Click
End Sub
'Gestionamos los botones de Siguiente y Anterior
Private Sub cmdSiguiente_Click()
'controlamos el botón de Siguiente
'limitándolo por el último registro
If fila <= NumItems Then
fila = fila + 1
RecuperaDatos (fila)
Else
MsgBox "Último registro"
End If
End Sub
Private Sub cmdAnterior_Click()
'controlamos el botón de Anterior
'limitándolo por el primer registro
If fila > 2 Then
fila = fila - 1
RecuperaDatos (fila)
Else
MsgBox "Primera entrada!!"
End If
End Sub
Private Sub cmdFin_Click()
fila = NumItems + 1
RecuperaDatos (fila)
End Sub
Private Sub cmdInicio_Click()
fila = 2
RecuperaDatos (2)
End Sub
'Procedimiento para recuperar datos de la hoja hacia el UserForm
Private Sub RecuperaDatos(nRow As Long)
Me.Txtid.Value = Cells(nRow, 1)
Me.TxtNombre.Value = Cells(nRow, 2)
Me.TxtApellido.Value = Cells(nRow, 3)
Me.txtEdad.Value = Cells(nRow, 4)
Me.txtSexo.Value = Cells(nRow, 5)
End Sub
