Macro para actualizar un combobox si se elige un checkbox

Tengo este código:

Private Sub UserForm_Activate()

Set h = Sheets("BASE")
TextBox1 = h.Range("D1").Value
Set h = Sheets("BASE")
TextBox2 = h.Range("E1").Value
If CheckBox1.Value = True Then

ult = Cells(Rows.Count, 51).End(xlUp).Row

For i = 5 To ult
ComboBox1.AddItem (Cells(i, 51))
Next

If CheckBox2.Value = True Then

ult = Cells(Rows.Count, 43).End(xlUp).Row

For i = 5 To ult
ComboBox1.AddItem (Cells(i, 43))
Next

If CheckBox3.Value = True Then

ult = Cells(Rows.Count, 45).End(xlUp).Row

For i = 5 To ult
ComboBox1.AddItem (Cells(i, 45))
Next

If CheckBox4.Value = True Then

ult = Cells(Rows.Count, 48).End(xlUp).Row

For i = 5 To ult
ComboBox1.AddItem (Cells(i, 48))
Next

If CheckBox5.Value = True Then

ult = Cells(Rows.Count, 49).End(xlUp).Row

For i = 5 To ult
ComboBox1.AddItem (Cells(i, 49))
Next

End If
End If
End If
End If
End If

End sub

Lo que deseo, es que cuando seleccione algún checkbox (son las cadenas de tienda), se actualice el combox y me muestre la información deseada (el listado de las tiendas de cada cadena), pero no me muestra nada, porfa su ayuda con esto para ver donde está mi error, tengo excel 2010.

1 respuesta

Respuesta
1

Quedaría de esta forma:

Private Sub CheckBox1_Click()
    If CheckBox1.Value = True Then Call CargaCombo(51)
End Sub
Private Sub CheckBox2_Click()
    If CheckBox2.Value = True Then Call CargaCombo(43)
End Sub
Private Sub CheckBox3_Click()
    If CheckBox3.Value = True Then Call CargaCombo(45)
End Sub
Private Sub CheckBox4_Click()
    If CheckBox4.Value = True Then Call CargaCombo(48)
End Sub
Private Sub CheckBox5_Click()
    If CheckBox5.Value = True Then Call CargaCombo(49)
End Sub
'
Sub CargaCombo(col)
'Por.Dante Amor
    ComboBox1.Clear
    Set h = Sheets("BASE")
    For i = 5 To h.Cells(Rows.Count, col).End(xlUp).Row
        ComboBox1.AddItem h.Cells(i, col)
    Next
End Sub
'
Private Sub UserForm_Activate()
'Act.Por.Dante Amor
    Set h = Sheets("BASE")
    TextBox1 = h.Range("D1").Value
    TextBox2 = h.Range("E1").Value
End Sub

Pero, si vas a seleccionar solamente una opción, sería mejor si en lugar de checkbox utilizas optionbutton, entonces la macro quedaría así:

Private Sub OptionButton1_Click()
    If OptionButton1.Value = True Then Call CargaCombo(51)
End Sub
Private Sub OptionButton2_Click()
    If OptionButton2.Value = True Then Call CargaCombo(43)
End Sub
Private Sub OptionButton3_Click()
    If OptionButton3.Value = True Then Call CargaCombo(45)
End Sub
Private Sub OptionButton4_Click()
    If OptionButton4.Value = True Then Call CargaCombo(48)
End Sub
Private Sub OptionButton5_Click()
    If OptionButton5.Value = True Then Call CargaCombo(49)
End Sub
'
Sub CargaCombo(col)
'Por.Dante Amor
    ComboBox1.Clear
    Set h = Sheets("BASE")
    For i = 5 To h.Cells(Rows.Count, col).End(xlUp).Row
        ComboBox1.AddItem h.Cells(i, col)
    Next
End Sub
'
Private Sub UserForm_Activate()
'Act.Por.Dante Amor
    Set h = Sheets("BASE")
    TextBox1 = h.Range("D1").Value
    TextBox2 = h.Range("E1").Value
End Sub
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Hola Experto, gracias por la pronta respuesta, intente lo que me indicaste, asigne el modulo CargaCombo(col) y agregue los códigos para cada botón, pero tanto con Checkbox como con OptionButton, me arrojo el siguiente error:

Se ha producido el error '424' en tiempo de ejecucuión

Se requiere un objeto

Y cuando elijo depurar me marca el error en esta línea:

 Saludos

Pero en mi código no puse ClearContents, en mi código puse Clear.

Copia tal cual mi código para que no tengas problemas.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Hola, si se me paso corregirlo y es que como me había arrojado ese error, quise experimentar pero no salió, de igual forma ya lo ajusté a como lo indicas y me sigue marcando el mismo error y en la misma línea, tanto en checkbox, como en optionbutton

Saludos!

¿Tienes un combo que se llama combobox1?

¿Tienes otro código además del que te envié?

¿Le hiciste más cambios a la macro que te envié?

Hola, experto respondo:

¿Tienes un combo que se llama combobox1? Solo tengo un combobox1, en todo el archivo , que es el que desplegaría las tiendas, según se elija en checkbox

¿Tienes otro código además del que te envié?, si hay mas códigos, pero son para imprimir o llamar al formulario

¿Le hiciste más cambios a la macro que te envié? Solo fue el que le mencione anteriormente el de ClearContents.

Saludos

¿Tienes el combo en la hoja o en un userform?

Envíame tu archivo para revisar y adaptar la macro

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Francisco Ocampo” y el título de esta pregunta.

Pero tienes que poner todo el código dentro del formulario.

Te anexo nuevamente el código. Actualicé las columnas para cada tienda.

Private Sub UserForm_Activate()
'Por.Dante Amor
    Set h = Sheets("BASE")
    TextBox1 = h.Range("D1").Value
    TextBox2 = h.Range("E1").Value
End Sub
'
Private Sub OptionButton1_Click() 'walmart
    If OptionButton1.Value = True Then Call CargaCombo(50)
End Sub
Private Sub OptionButton2_Click() 'bodega aurrera
    If OptionButton2.Value = True Then Call CargaCombo(43)
End Sub
Private Sub OptionButton3_Click() 'comercial mexicana
    If OptionButton3.Value = True Then Call CargaCombo(45)
End Sub
Private Sub OptionButton4_Click() 'Soriana
    If OptionButton4.Value = True Then Call CargaCombo(47)
End Sub
Private Sub OptionButton5_Click() 'Superama
    If OptionButton5.Value = True Then Call CargaCombo(48)
End Sub
Sub CargaCombo(col)
'Por.Dante Amor
    ComboBox1.Clear
    Set h = Sheets("BASE")
    For i = 5 To h.Cells(Rows.Count, col).End(xlUp).Row
        ComboBox1.AddItem h.Cells(i, col)
    Next
End Sub
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas