2017-03-23 9 views
0

Ich programmiere ein Benutzerformular basierend auf der Anzahl der Zeilen in einem Blattbereich (derzeit auf eine feste Anzahl zum Testen festgelegt). Dann überprüft der Benutzer die Kästchen, die überprüft werden sollen, und klickt auf die Befehlsschaltfläche.Excel VBA UserForm CheckBoxes Zugriff

Das Benutzerformular, wie mit dem unten stehenden Code ausgeführt, hat eine Befehlsschaltfläche und ein Kontrollkästchen manuell hinzugefügt. Die anderen Kontrollkästchen werden programmgesteuert hinzugefügt. Ich kann nicht herausfinden, wie man den Wert von der Checkbox erhält, die problematisch verursacht wird. Ich bekomme nur einen Fehler, dass "Testbox" nicht definiert ist. Ich weiß, ich vermisse etwas Einfaches ...

Irgendwelche Gedanken? Vielen Dank!

Option Explicit 

Private Sub updateTablesBtn_Click() 
    If CheckBox1.Value = True Then 
     MsgBox "true" 
    End If 

    If testBox.Value = True Then 
     MsgBox "true" 
    End If 
End Sub 

Private Sub UserForm_Initialize() 
    Dim chkBox As MSForms.CheckBox 

    With formTableUpdate 
     .Width = 150 
     .Height = 200 '15 + 20 * (noOfVariants + 1) + 30 
    End With 

    Set chkBox = formTableUpdate.Controls.Add("Forms.CheckBox.1") 
    With chkBox 
     .Name = "testBox" 
     .Caption = "test" 
     .Left = 5 
     .Top = 10 
    End With 

    With updateTablesBtn 
     .Caption = "Update Tables" 
     .Height = 25 
     .Width = 76 
     .Left = 38 
     .Top = 30 
    End With 

End Sub 

Antwort

1

Versuchen Sie folgendes:

Dim chkBox As Control 

For Each chkBox In formTableUpdate.Controls 
    If chkBox.Name = "testBox" Then 
     MsgBox chkBox.Caption & " has the value " & chkBox.Value 
    End If 
Next chkBox 
Verwandte Themen