De un combobox que te muestra el nombre de todas la hojas que tienes omitir algunas hojas

hola buen dia esperando me puedan ayudar y explicar detalladamente

tengo un userform con dos combobox que me muestran las hojas que tengo em mi libro

las hojas de mi libro son(hoja1 hoja2 hoja3 hasta la 30)

pero en las hojas 3,hoja9,hoja12, tengo algunas gráficas

las cuales no quiero que apraescan en las listas de los combo box

ademas como los dos combobox me muestran la misma lista quiero hacer que si en el primer combobox selecciono la hoja1

que en el combobox2 no me aparezca el la hoja 1 por que ya esta ocupada en el combobox1

mi código es este

Private Sub UserForm_Activate()

'Captura datos y guarda en empresa
ws_Count = ActiveWorkbook.Worksheets.Count

For i = 1 To ws_Count

With Me.ComboBox1

.AddItem Worksheets(i).Name

End With

Next

'para agregar otra lista desplegable

For i = 1 To ws_Count

With Me.ComboBox2

.AddItem Worksheets(i).Name

End With

Next

End Sub

espero me puedan echar la mano y explicarme detalladamente o si pueden pasarme el código que tengo que ocupar estere infinitamente agradecido

saludos

1 Respuesta

Respuesta
1

El código quedaría así:

Private Sub UserForm_Initialize()
ws_Count = ActiveWorkbook.Worksheets.Count
For i = 1 To ws_Count
' Comprueba si son las hojas 3, 9 o 12
If i = 3 Or i = 9 Or i = 12 Then GoTo Salir
' Carga los dos combox con el mismo bucle
ComboBox1.AddItem Worksheets(i).Name
ComboBox2.AddItem Worksheets(i).Name
Salir:
Next
End Sub

Y añade este código también, que lo que hace es volver a cargar los datos del combobox2 dependiendo del valor del combox1. El evento Exit se ejecuta cuando sales del combobox1, que es lo que nos interesa.

Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
ws_Count = ActiveWorkbook.Worksheets.Count
'Borra los elementos del combobox 2
ComboBox2.Clear
For i = 1 To ws_Count
' Comprueba si son las hojas 3, 9 o 12 y el valor de ComboBox1
If i = 3 Or i = 9 Or i = 12 Or Worksheets(i).Name = ComboBox1.Value Then GoTo Salir
' Carga los dos combox con el mismo bucle
ComboBox2.AddItem Worksheets(i).Name
Salir:
Next
End Sub

Un saludo y no olvides cerrar y puntuar la pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas