Combobox_Change al crear Combobox nuevo

Seria posible dar propiedad change, enter, exit a un combobox creado sin plantilla, es decir, ¿de programación pura y desde una función?

Ej:

'''''''''' CREO EL COMBOBOX.
Set lotemas = Me.Controls.Add("Forms.Combobox.1")
With lotemas
         .Height = 15.75
         .Left = 6
         .Top = 336 + ttop
         .Width = 72
         .Name = "CLote" & i 
         .ControlTipText = "CLote" & i
End With
'''''''' COMO AÑADIR CHANGE AL COMBOBOX CREADO? ¿? ¿? ¿? ¿
Private Sub CLote9_Change()
Lote9.Clear
End Sub

1 respuesta

Respuesta
1

Sigue los siguientes pasos:

1. Crea una Clase1 y pon el siguiente código:

Public WithEvents tbxCustom1 As MSForms.ComboBox 'Custom ComboBox
'
Private Sub tbxCustom1_Change()
    MsgBox "Modificaste el combo: " & tbxCustom1.Name
End Sub

No todos los eventos existen en la clase, sí existe el evento Change, y los que ves en la imagen:


2. En tu formulario en el evento Activate pon esto:

Private Sub UserForm_Activate()
'Por.Dante Amor
    Set colTbxs = New Collection
End Sub

3. Al inicio de todo tu código (Declaraciones) pon esto:

Dim colTbxs As Collection 'Collection Of Custom combo

4. En un botón para crear un combo:

Private Sub CommandButton2_Click()
'Por.Dante Amor
    i = 1
    Set lotemas = Me.Controls.Add("Forms.Combobox.1")
    With lotemas
        .Height = 15.75
        .Left = 6
        .Top = 336 + ttop
        .Width = 72
        .Name = "CLote" & i
        .ControlTipText = "CLote" & i
    End With
    Me.Controls("CLote" & i).SetFocus
    '
    Set clsObject = New Clase1
    Set clsObject.tbxCustom1 = Me.Controls("CLote" & i)
    colTbxs.Add clsObject
    '
End Sub

Todo el código, quedaría así:

Dim colTbxs As Collection 'Collection Of Custom combo
'
Private Sub CommandButton2_Click()
'Por.Dante Amor
    i = 1
    Set lotemas = Me.Controls.Add("Forms.Combobox.1")
    With lotemas
        .Height = 15.75
        .Left = 6
        .Top = 336 + ttop
        .Width = 72
        .Name = "CLote" & i
        .ControlTipText = "CLote" & i
    End With
    Me.Controls("CLote" & i).SetFocus
    '
    Set clsObject = New Clase1
    Set clsObject.tbxCustom1 = Me.Controls("CLote" & i)
    colTbxs.Add clsObject
    '
End Sub
'
Private Sub UserForm_Activate()
'Por.Dante Amor
    Set colTbxs = New Collection
End Sub

En la clase tienes que poner lo que quieres hacer cuando Cambie el combo que acabas de crear, veo que tienes la variable   i   para identificar el número de combo, entonces en la clase deberás apoyarte en esa variable para saber cuál combo estás ocupando; en fin, eso es parte de tu proceso, la idea es crear el evento Change del combo que acabas de crear.


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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas