Good morning Trees,
Here is a copy of the code that was provided to me by Andy Pope. You should be able to easily modify it to be specific to your application.
Option Explicit
Private m_shtMyData As Worksheet
Private m_lngActiveRow As Long
Private m_lngMaximumRow As Long
Private Sub LoadRecord()
Dim strName As String
strName = m_shtMyData.Name & "!"
TextBox1.ControlSource = strName & m_shtMyData.Cells(m_lngActiveRow, 1).Address
TextBox2.ControlSource = strName & m_shtMyData.Cells(m_lngActiveRow, 2).Address
TextBox3.ControlSource = strName & m_shtMyData.Cells(m_lngActiveRow, 3).Address
TextBox4.ControlSource = strName & m_shtMyData.Cells(m_lngActiveRow, 4).Address
Me.Caption = "Record [" & CStr(m_lngActiveRow - 1) & "/" & CStr(m_lngMaximumRow - 1) & "]"
End Sub
Private Sub MoveBack()
m_lngActiveRow = m_lngActiveRow - 1
LoadRecord
cmdBack.Enabled = Not (m_lngActiveRow = 2)
cmdNext.Enabled = (m_lngActiveRow <= m_lngMaximumRow)
End Sub
Private Sub MoveFirst()
m_lngActiveRow = 2
LoadRecord
cmdBack.Enabled = False
cmdNext.Enabled = (m_lngActiveRow < m_lngMaximumRow)
End Sub
Private Sub MoveLast()
m_lngActiveRow = m_lngMaximumRow
LoadRecord
cmdNext.Enabled = False
cmdBack.Enabled = (m_lngActiveRow > 2)
End Sub
Sub MoveNext()
m_lngActiveRow = m_lngActiveRow + 1
LoadRecord
cmdNext.Enabled = Not (m_lngActiveRow = m_lngMaximumRow)
cmdBack.Enabled = (m_lngActiveRow > 1)
End Sub
Private Sub cmdBack_Click()
MoveBack
End Sub
Private Sub cmdFirst_Click()
MoveFirst
End Sub
Private Sub cmdLast_Click()
MoveLast
End Sub
Private Sub cmdNext_Click()
MoveNext
End Sub
Private Sub CommandButton1_Click()
Unload Me
End Sub
Private Sub UserForm_Initialize()
Set m_shtMyData = Worksheets("Sheet1")
m_lngMaximumRow = Application.WorksheetFunction.CountA(Range("A:A"))
Label1.Caption = m_shtMyData.Cells(1, 1).Text
Label2.Caption = m_shtMyData.Cells(1, 2).Text
Label3.Caption = m_shtMyData.Cells(1, 3).Text
Label4.Caption = m_shtMyData.Cells(1, 4).Text
MoveFirst
End Sub