Condicionar cuadro combinado con otro Excel

Hola, tengo un formato varios cuadros combinados que esta vinculados a un archivo llamado "listado de productos", quisiera que el cuadro combinado 2 se habilite si diligencio correctamente el 1, el cuadro combinado 3 se habilite si diligencio correctamente el 3 y asi sucesivamente hasta el cuadro combinado 10. La macro que tengo hasta el momento es la siguiente:

Private Sub ComboBox1_Change()
If (ComboBox1.ListIndex = -1) Then
MsgBox ("Por favor ingresar un producto de la lista")
End If
End Sub

Agradezco al experto que me pueda ayudar.

Gracias

1 Respuesta

Respuesta
1

Pero cuándo es correcto es combobox1 y cuándo el combobox2, ¿etc?

Es decir, ¿cada combobox previamente está cargado con una lista?

¿Y quieres que solamente capturen un valor de esa lista?

El combobox1 siempre estará visible o habilitado, pero el combobox 2 se habilitara o se hará visible si se ingresaron correctamente los datos del combobox 1, y asi sucesivamente. Los combobox´s están enlazados con una base de datos de una hoja llamada "listado de productos". y los combobox´s solo me arrojaran los datos de esa base de datos.

Gracias.

Pero, ¿cómo voy a saber si pusieron datos correctos en el combo1?

Es decir, si ponen manzana, ¿cómo sé que manzana es correcto?

Si ponen zapato, ¿cómo sé que zapato es incorrecto?

Porque ese listado que esta enlazado con los combobox´s tiene la información y pues porque esta la siguiente macro:

Private Sub ComboBox1_Change()
If (ComboBox1.ListIndex = -1) Then
MsgBox ("Por favor ingresar un producto de la lista")
End If
End Sub

Te pongo el ejemplo de los combox 2 y 3, deberás adaptarlo del 2 hasta 10

Private Sub ComboBox1_Change()
'Por.DAM
ComboBox2 = ""
ComboBox3 = ""
ComboBox2.Visible = False
ComboBox3.Visible = False
If (ComboBox1.ListIndex = -1) Then
    MsgBox ("Por favor ingresar un producto de la lista 1")
    ComboBox1.SetFocus
    Exit Sub
End If
ComboBox2.Visible = True
ComboBox2.SetFocus
End Sub
Private Sub ComboBox2_Change()
'Por.DAM
ComboBox3 = ""
ComboBox3.Visible = False
If ComboBox2 = "" Then Exit Sub
If (ComboBox2.ListIndex = -1) Then
    MsgBox ("Por favor ingresar un producto de la lista 2")
    ComboBox2.SetFocus
    Exit Sub
End If
ComboBox3.Visible = True
ComboBox3.SetFocus
End Sub

Saludos.DAM
Si es lo que necesitas.

Gracias por el aporte, pero al ingresar el comando y ejecutarlo en el ComboBox 1 me aparece el siguiente error:

"Se ha producido el error ´438´ en tiempo de ejecución:

El objeto no permite esta propiedad o método"

Y luego me aparece subrayado en amarillo el comando: "ComboBox40.SetFocus"

Nuevamente requiero de su ayuda,

Mil gracias.

Pero en el código que yo te envié no menciono el combobox40.

Si te funciona la respuesta que te envié para los combos, finaliza esta pregunta.

Con gusto te sigo ayudando, pero deberás crear una pregunta por cada petición

Saludos. DAM

Disculpa, error de digitación, el error q me aparece es:

"Se ha producido el error ´438´ en tiempo de ejecución:
El objeto no permite esta propiedad o método"
Y luego me aparece subrayado en amarillo el comando: "ComboBox2.SetFocus"

Gracias

¿Digitación de 40 a 2?

Private Sub ComboBox1_Change()
ComboBox2 = ""
ComboBox3 = ""
ComboBox2.Visible = False
ComboBox3.Visible = False
If (ComboBox1.ListIndex = -1) Then
MsgBox ("Por favor ingresar un producto de la lista")
ComboBox1.SetFocus
Exit Sub
End If

ComboBox2.Visible = True
ComboBox2.SetFocus
End Sub

Private Sub ComboBox2_Change()
ComboBox3 = ""
ComboBox3.Visible = False
If ComboBox2 = "" Then Exit Sub
If (ComboBox2.ListIndex = -1) Then
MsgBox ("Por favor ingresar un producto de la lista")
ComboBox2.SetFocus
Exit Sub
End If
ComboBox3.Visible = True
ComboBox3.SetFocus
End Sub

Private Sub ComboBox3_Change()
ComboBox4 = ""
ComboBox4.Visible = False
If ComboBox3 = "" Then Exit Sub
If (ComboBox3.ListIndex = -1) Then
MsgBox ("Por favor ingresar un producto de la lista")
ComboBox3.SetFocus
Exit Sub
End If
ComboBox4.Visible = True
ComboBox4.SetFocus
End Sub

Se me olvidaba no se si tiene algo q ver que el combobox q estoy utilizando en Controles ActiveX.

Gracias

No me aparece el error.

Envíame tu archivo para revisar tú código

Vale, ya lo envíe. Gracias

Borra todas las líneas que digan Setfocus

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas