Código con error "se ha producido el error '1004' en tiempo de ejecución error defino por la aplicación u objeto "

Necesito de su experiencia, soy nuevo en esto y me gustaría que me ayudaran con este tema.

Tengo el siguiente código que me genera este error.

El error me lo indica en el siguiente código, el cual me lo resalta en amarillo.

Private Sub ComboBox3_Change()
ComboBox4.Clear
Hoja1.Select
columna = ComboBox3.ListIndex + 1
Cells(2, columna).Select
Do While Not IsEmpty(ActiveCell)
ComboBox4.AddItem ActiveCell
ActiveCell.Offset(1, 0).Select
Loop
End Sub 

El cual pongo en letras negrita.

1 Respuesta

Respuesta
1

Si es exactamente en esa línea el error, significa que la variable columna tiene, muy probablemente, el valor cero (0) y no existe la celda (2,0). ¿Por qué podría dar cero la variable columna si le asignas un valor antes? Puede haber, al menos, dos motivos:

1- El "ComboBox" no tiene valores agregados, entonces, al intentar seleccionar algún valor y no haber nada, su propiedad "ListIndex" es menos uno (-1) y al sumarle uno (1) en el momento que le asignas valor a la variable, pues da cero (0).

2- El "ComboBox" tiene valores agregados pero en lugar de seleccionar alguno lo que haces es escribir directamente y la propiedad "ListIndex" también es menos uno (-1) en esos casos ocasionando el mismo dilema del punto uno (1). Si quieres evitar que se pueda escribir directamente en el "ComboBox" solo cambia su propiedad "Style" a "2-fmStyleDropDownList.

Comentas

Abraham Valencia

Hola Abraham Valencia

Entiendo tu respuesta, pero se muy poco de esto, me podrías ayudar a revisar mi archivo.

¿De qué manera de lo puedo compartir?

Ya que he modificado el "style", pero aun me encuentro con este detalle.

Gracias por tus comentarios y la atención prestada.

El foro/web no permite adjuntar archivo así que usa "Google Drive" o "OneDrive" o "DropBox", por ejemplo. Lo "subes" y le doy una revisada.

Salu2

Abraham Valencia

Hola Abraham

Te comparto el vinculo en DropBox 

https://www.dropbox.com/s/8xygg28hemada62/EMISI%C3%93N%20ETIQUETAS.xlsm?dl=0 

Muchas gracias 

Saludos.

Tu problema no es en realidad en el propio "ComboBox3" sino en que en tu botón "Actualizar Datos" ("CommandButton1") ya que ahí pones el "ComboBox3" en blanco: ComboBox3 = "". Entonces, al dejar en "blanco" dicho "Combobox" dejas su propiedad "ListIndex" en menos uno (-1) y al tener el evento "Change" de dicho "ComboBox" activado, ocurre lo que te comenté antes: La variable columna se queda en cero (0).

¿Cómo solucionarlo? Excel tiene una propiedad que anula/desactiva los eventos: Application. EnableEvents pero, no actúa a nivel de "UserForm" y los objetos que contenga, entonces hay que simular algo parecido.

Aquí he colocado tu archivo ya con el "arreglito":

https://1drv.ms/x/s!ApkTgtnWCTgAi0CKg0zdhqX8SACo 

He creado una variable pública del tipo "Boolean" que coloco en "True" desde que inicia tu "UserForm":

Public EnableEvents As Boolean
Private Sub UserForm_Initialize()
 Me.EnableEvents = True

Luego, en el evento "Change" del "ComboBox3" le "digo" que si esa variable es "False" pues que "no haga nada":

Private Sub ComboBox3_Change()
If EnableEvents = False Then Exit Sub

Y en tu botón "Actualizar Datos" le coloco "False" antes de dejar en blanco tu "Combobox3" y así no ocurrirá el error. Después de dejar en blanco el "Combobox3" dejo la variable en "True" para que sí puedas volver a ingresar datos si lo necesitas y sí funcione el evento "Change"

Me.EnableEvents = False
ComboBox3 = ""
Me.EnableEvents = True

Mira el archivo para que lo entiendas mejor.

Feliz año

Abraham Valencia

¡Gracias! 

Me funciono Excelente Abraham Valencia

Ahora entiendo mucho mejor, muchas gracias por tu tiempo y dedicación y la enseñanza aprendida, como dices revisando el archivo se entiende mejor.

muchas gracias, Feliz Año Nuevo Excelente inicio de año...

Excelente, de nada y feliz año :)

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas