# Primero, Siguiente, Anterior, Ultimo registro



## ColdGeorge (Feb 21, 2014)

Hola amigos

En una tabla, guardo los registros que capturo con un formulario, tengo cuatro botones para navegar, para el primer registro uso:


```
Private Sub btnprimer_Click()
Me.txtnumero.Value = Range("A2").Value
Me.txtalta.Value = Range("A2").Offset(0, 1).Value
Me.txtnombre.Value = Range("A2").Offset(0, 2).Value
Me.txtsueldo.Value = Range("A2").Offset(0, 3).Value
End Sub
```

Para el ultimo registro, empleo:


```
Private Sub btnultimo_Click()
Me.txtnumero.Value = Range("A" & Rows.Count).End(xlUp).Value
Me.txtalta.Value = Range("A" & Rows.Count).End(xlUp).Offset(0, 1).Value
Me.txtnombre.Value = Range("A" & Rows.Count).End(xlUp).Offset(0, 2).Value
Me.txtsueldo.Value = Range("A" & Rows.Count).End(xlUp).Offset(0, 3).Value
End Sub
```

Necesito ayuda para el Siguiente y Anterior, gracias de antemano, ColdGeorge


----------



## AngelJ (Feb 24, 2014)

¡Hola ColdGeorge! Creo que será mejor guardar el registro actual en una variable.  Así es como yo lo haría: 

```
Private Const MinRow As Long = 2
Private CurrentRow As Long
 
Private Function MaxRow() As Long
    With Cells(MinRow, 1).CurrentRegion
        MaxRow = .Rows.Count - .Row + 1
    End With
End Function
 
Private Sub AnteriorBtn_Click()
    CurrentRow = IIf(CurrentRow - 1 < MinRow, MinRow, CurrentRow - 1)
    UpdateTextBoxes
End Sub
 
Private Sub PrimerBtn_Click()
    CurrentRow = MinRow
    UpdateTextBoxes
End Sub
 
Private Sub SiguienteBtn_Click()
    CurrentRow = IIf(CurrentRow + 1 > MaxRow, MaxRow, CurrentRow + 1)
    UpdateTextBoxes
End Sub
 
Private Sub UltimoBtn_Click()
    CurrentRow = MaxRow
    UpdateTextBoxes
End Sub
 
Private Sub UpdateTextBoxes()
    TextBox1 = Sheet1.Cells(CurrentRow, 1).Text
    TextBox2 = Sheet1.Cells(CurrentRow, 2).Text
    TextBox3 = Sheet1.Cells(CurrentRow, 3).Text
    TextBox4 = Sheet1.Cells(CurrentRow, 4).Text
End Sub
 
Private Sub UserForm_Initialize()
    CurrentRow = MinRow
    UpdateTextBoxes
End Sub
```
Y aquí esta una muestra: https://drive.google.com/file/d/0B9CuYslrmRbBTHVhbXZrVDJ6enM/edit?usp=sharing


----------



## ColdGeorge (Feb 25, 2014)

Hola AngelJ

Gracias por tu sugerencia, voy a probarla y te comentaré los resultados.

ColdGeorge


----------



## ColdGeorge (Feb 26, 2014)

Hola AngelJ

Acertada tu sugerencia, ahora todo esta bajo control, como haría para editar y eliminar registros?

ColdGeorge


----------



## AngelJ (Feb 28, 2014)

Para eliminar registros, puede usar algo como esto:

```
Sheet1.Rows(CurrentRow).Delete
```
Editar es lo contrario de lo que usamos para llenar las cajas de texto:

```
Sheet1.Cells(CurrentRow, 1) = TextBox1
```


----------



## ColdGeorge (Feb 28, 2014)

Gracias AngelJ

Todo funciona como es debido, saludos a tu tierra.

ColdGeorge


----------

