Here's a simple example of what I mean by building a better index
Sub fetch_data_listbox1()
Dim fetchrow As Integer
For fetchrow = 1 To UserForm1.ListBox3.ListCount
If UserForm1.ListBox3.List(fetchrow - 1) = UserForm1.ListBox1.List(UserForm1.ListBox1.ListIndex) Then
Exit For
End If
Next fetchrow
fetchrow = 2 + fetchrow
UserForm1.TextBox1 = Format(Sheets("Register").Range("a" & fetchrow), "")
UserForm1.TextBox2 = Format(Sheets("Register").Range("b" & fetchrow), "")
UserForm1.TextBox3 = Format(Sheets("Register").Range("c" & fetchrow), "")
UserForm1.TextBox4 = Format(Sheets("Register").Range("d" & fetchrow), "")
End Sub