Se podrá en una sola línea, ¿Una sola indicación para varias condicionales?

En un modelo tengo que colocar hasta 20 indicaciones para el mismo resultado, mi pregunta es: si se podría indicar en una sola orden que realice las 20 condiciones

Private Sub Combo1_Change()

Label1.Visible = False
End Sub

Private Sub Combo2_Change()
Label2.Visible = False
End Sub

Private Sub Combo3_Change()
Label3.Visible = False
End Sub

Private Sub Combo4_Change()
Label4.Visible = False
End Sub

1 respuesta

Respuesta
2

No precisamente con una sola orden. Pero se puede crear una clase y poner la instrucción en la clase.

Crea una Clase llamada Clase1 y pones el siguiente código:

Public WithEvents tbxCustom1 As MSForms.ComboBox 'Custom button
'
Private Sub tbxCustom1_Change()
'Por.Dante Amor
    n = Mid(tbxCustom1.Name, Len("Combo") + 1)
    UserForm1.Controls("Label" & n).Visible = False
End Sub

Instrucciones para crear una clase

  1. Abre tu hoja de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo de clase
  4. En el panel del lado derecho copia la macro
  5. Cambia en la clase UserForm1 por el Name de tu formulario

Ahora, en tu formulario pon el siguiente código, revisa que la primera línea:

Dim colCombo As Collection

quede hasta el principio de todo tu código:

Dim colCombo As Collection 'Collection de Combos
'
Private Sub UserForm_Initialize()
'Act.Por.Dante Amor
    Dim ctlLoop As MSForms.Control
    Dim clsObject As Clase1
    Set colCombo = New Collection
    For Each ctlLoop In Me.Controls
        If TypeName(ctlLoop) = "ComboBox" Then
            Set clsObject = New Clase1
            Set clsObject.tbxCustom1 = ctlLoop
            colCombo.Add clsObject
        End If
    Next ctlLoop
End Sub

Notas: Veo que en tu código los Combos se llaman "Combo1", "Combo2", etc, entonces todos los combos deberán conservar el nombre "Combo", al igual todos los Label deberán conservar su nombre inicial "Label", de esa forma podemos saber que para el Combo3 le corresponde el Label3.


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

marca error en:

Public WithEvents tbxCustom1 As MSForms.ComboBox 'Custom button

perdón no marca error, solo que si me da el resultado pero solo en el Combo1, el resto no ni en los Label

¿Tienes un "Combo2" y un "Label2"?

Así es, tengo Combo1 hasta Combo20 y en cada combo existe Label1 hasta Label20

Es decir Combo1 con Label1, Combo2 con Label2... etc

Según tu macro, tienes que capturar algo en el combo2, entonces el labe2 se oculta.

Si ya capturaste algo en el combo2 y el label2 sigue visible, entonces envíame tu archivo con tu formulario y las macros que te envié para revisarlo.

Mi correo [email protected]

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

Revisé tu archivo y en el combo1 tienes el labe1, pero en el combo2 tienes el label3, en el combo3 tienes el label5.

Debes tener combo1 y label1

Combo2 y label2

Sal u dos

ya modifique y lo puse consecutivo para el resultado, desde el Combo1 con Label1....hasta Combo10 con Label10

en el caso de los TextBox llamado Recomendacion1 debe ocultar Label11...hasta Recomendacion10 con Label20

Para el caso de los textbox hay que crear otra clase2, intenta crearla. Si tienes dificultades, crea una nueva pregunta.

sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas