Puede sonar medio enredado pero lo que ocurre es que en tu "UserForm" llamado "Datos", en tu "Combobox2" tienes el evento "Change" activado y en el evento "Click" del botón "Registrar" tienes la siguiente línea:
ComboBox2 = Empty
Al dejar "limpio" el "Combobox2" se activa el evento "Change" y ya desde la primera línea da error:
TextBox5.Text = Sheets("BASE DATOS").Cells(ComboBox2.ListIndex + 1, 5)
El "ListIndex" en ese momento es -1 generando el erro
¿Qué hacer? El VBA tiene una propiedad que habilita/deshabilita los "eventos" (Application. EnableEvents) pero no funciona a nivel de controles de los "UserForm" por lo que hay que emularlo.
Pon lo siguiente en la parte superior del módulo de tu "UserForm":
Public EnableEvents As Boolean
El evento "Change" de tu "combobox2" déjalo así:
Private Sub ComboBox2_Change()
If Me.EnableEvents = False Then Exit Sub
TextBox5.Text = Sheets("BASE DATOS").Cells(ComboBox2.ListIndex + 1, 5)
TextBox6.Text = Sheets("BASE DATOS").Cells(ComboBox2.ListIndex + 1, 6)
ComboBox1.Text = Sheets("BASE DATOS").Cells(ComboBox2.ListIndex + 1, 3)
ComboBox3.Text = Sheets("BASE DATOS").Cells(ComboBox2.ListIndex + 1, 2)
TextBox4.Text = Sheets("BASE DATOS").Cells(ComboBox2.ListIndex + 1, 4)
End Sub
Y en el evento "click" del botón "Registrar" coloca esto al inicio:
Me.EnableEvents = False
Y esto al final:
Me.EnableEvents = True
Salu2
Abraham Valencia