2017-07-21 65 views
0

我無法從用戶窗體的複選框獲取值。我遇到的問題是,用戶窗體基於表單中的值創建可變數量的複選框。造成這種情況的代碼:VBA從用戶表單獲取複選框值

Private Sub UserForm_Initialize() 

Dim LastRow As Long 
Dim i As Long 
Dim Teller As Long 
Dim chkBox As MSForms.CheckBox 

Teller = 1 
LastRow = Worksheets("Sheet").Cells(Rows.Count, 1).End(xlUp).Row 

For i = 1 To LastRow 
    If Worksheets("Sheet").Cells(i, 1).Value = Worksheets("Sheet").Range("S1").Value Then 
     Set chkBox = Me.Controls.Add("Forms.CheckBox.1", "CheckBox_" & Teller) 
     chkBox.Caption = Worksheets("Sheet").Cells(i, 9).Value 
     chkBox.Left = 5 
     chkBox.Top = 25 + ((Teller - 1) * 20) 
     Teller = Teller + 1 
    End If 
Next i  
End Sub 

所以這造成了一些複選框的命名CheckBox_1,CheckBox_2等 問題是,當我試圖讓該模塊在CheckBox_1價值,CheckBox_1尚未建立,所以我我無法使用它。

Dim x as String 
With UserForm4 
    .Show 
    x = .CheckBox_1 
    MsgBox (x) 
    End 
End With 

回答

1

您需要遍歷.Controls文本框不是窗體上的屬性。

+1

不必**必須循環控制 - 「x = .Controls(」CheckBox_1「)。如果OP知道他們想要第一個控件,Value就會工作。 (但顯然'x = .Controls(「CheckBox_」&i).Value'可以用於需要循環的場合。) – YowE3K

+0

@ YowE3K工作正常!感謝你們倆。 – Stan