Ho 4+ ComboBox su un modulo utente. Quando sparano, sparano lo stesso evento. Quello che sto cercando di fare è scoprire quale ComboBox ha attivato l'evento. I ComboBox sono creati in base a quanti componenti ci sono. Il codice che genera il ComboBoxes è la seguente:Identificazione di ComboBox VBA di Excel
For j = 0 To UBound(ComponentList) - 1
'Set Label
num = j + 1
Set control = UserForm1.Controls.Add("Forms.Label.1", "ComponentLabel" & CStr(num) & ":", True)
With control
.Caption = "Component " & CStr(num)
.Left = 30
.Top = Height
.Height = 20
.Width = 100
.Visible = True
End With
'set ComboBox
Set combo = UserForm1.Controls.Add("Forms.ComboBox.1", "Component" & num & ":", True)
With combo
.List = ComponentList()
.Left = 150
.Top = Height
.Height = 20
.Width = 50
.Visible = True
Set cButton = New clsButton
Set cButton.combobox = combo
coll.Add cButton
End With
Height = Height + 30
Next j
Questo funziona bene e posso ottenere il valore selezionato dall'utente, ma non riesco a trovare quale ComboBox è stato utilizzato. Questo codice qui sotto è l'evento che spara (clsButton
):
Public WithEvents btn As MSForms.CommandButton
Public WithEvents combobox As MSForms.combobox
Private combolist() As String
Private Sub btn_Click()
If btn.Caption = "Cancel" Then
MsgBox "Cancel"
Unload UserForm1
Variables.ComponentSelectionError = False
ElseIf btn.Caption = "Enter" Then
MsgBox "enter"
Unload UserForm1
Variables.ComponentSelectionError = True
End If
End Sub
Private Sub combobox_Click()
MsgBox combobox.Value
End Sub
Questo bit di codice di cui sopra è stato gentilmente lavorato da Doug Glancy per ottenere gli eventi che lavorano con il codice generato ComboBoxes.
Come si ottiene il ComboBox che ha attivato l'evento? cioè il nome o qualche altra forma di identificazione.
Grazie a questo ha funzionato, ho anche trovato una soluzione dopo ore di ricerca e ora sto combinando entrambi. Grazie per l'aiuto! – NoLiver92