¿Alguien me puede decir porque esta macro me da error?

Estoy intentando que esta macro me ingrese lo datos a una tabla en una hoja, tomando los datos de otra hoja automáticamente, pero me resulta algo raro, porque aunque la macro me ingresa los datos a la tabla me da un error 1004, y no se porque.

Aquí dejo el link para que vean la macro

https://www.dropbox.com/s/g0uy1ftfhexwoco/macro.xlsm?dl=0 

1 Respuesta

Respuesta
1

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

Hola Gracias por responder

No se si hice algo malo pero me da error, te envío fotos:

Saludos

Como mencioné, hay que colocarlo al inicio del módulo (no dentro de una rutina), pero también mencioné que del módulo del "UserForm" llamado "Datos":

Colócalo así y verás. Salu2.

Abraham Valencia

Lo hice así y ya no me da error, pero ya no me auto completa los valores

Saludos

Y esto en el módulo, también, del "USerform" de nombre "Datos":

Private Sub UserForm_Initialize()
Me.EnableEvents = True
End Sub

Ahora sí

Abraham Valencia

¡Gracias! 

Me funcionó, pero no podía borrar nada del useform porque me daba error. Seguí tu consejo y le agregué una fila más a mi tabla y marcha perfectamente. 

Saludos 

Aja, excelente, bien por adaptarlo. Salu2

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas