2013-03-20 62 views
3

我對VBA很新,只有3天...但我發現它非常有用,易於使用,但現在我面臨一個問題。 我需要使用不同的複選框來創建用戶窗體,但是我需要根據在工作表的某一列中使用的信息自動添加它們。 我相信我可以使用For .. Each ..其次,但我真的不知道如何填充複選框。 這是我現在唯一的解決方案,但我不能做出不同的複選框,只有一個。那我需要做的將複選框添加到基於單元格值的用戶窗體

For Each rCell In Range("B1:B" & LastRow) 
    If rCell.Value <> "" Then 
     UserForm1.Controls.Add ("Forms.CheckBox.1") 
    End If 
Next 

一件事是,一旦它被添加填充複選框的屬性,所以我可以用後的值工作。

任何幫助將不勝感激,謝謝!

回答

0

看看這個先前的答案,因爲它解釋了你需要的原則,我想。

Add Controls To A Frame

+0

謝謝,但這不是我要找的。我需要以動態方式添加元素,因此,Form.CheckBox.1的名稱應該類似於Form.CheckBox。[i]。至少這是第一件事。 – hcsnemrebured 2013-03-20 18:46:32

5

我敢肯定你現在之前已經得到了你的答案,但因爲這在谷歌搜索我的來了,我想我會發布另一個答案。將下面的代碼在您的用戶窗體:

Option Explicit 

Private Sub UserForm_Initialize() 

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

curColumn = 1 'Set your column index here 
LastRow = Worksheets("Sheet1").Cells(Rows.Count, curColumn).End(xlUp).Row 

For i = 1 To LastRow 
    Set chkBox = Me.Controls.Add("Forms.CheckBox.1", "CheckBox_" & i) 
    chkBox.Caption = Worksheets("Sheet1").Cells(i, curColumn).Value 
    chkBox.Left = 5 
    chkBox.Top = 5 + ((i - 1) * 20) 
Next i 

End Sub 

您將需要修改以滿足您的特定需求的代碼,但是這將讓你開始。

0
UserForm1.Controls("Checkbox" & i).Value 
相關問題