5

我对 VBA 很陌生,只有 3 天......但我发现它非常有用且易于使用,但现在我面临一个问题。我需要使用不同的复选框制作一个用户窗体,但我需要根据工作表的一列中使用的信息自动添加它们。我相信我可以使用 For .. Each .. Next 但我真的不知道如何填写复选框。这是我现在唯一的解决方案,但我无法制作不同的复选框,只有一个。

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

我需要做的另一件事是在添加复选框后填充复选框的属性,以便之后我可以使用这些值。

任何帮助将不胜感激,谢谢!

4

3 回答 3

9

我确定您之前已经得到了答案,但是由于这出现在我的谷歌搜索中,我想我会发布另一个答案。将以下代码放在您的用户窗体中:

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

您将需要修改代码以满足您的特定需求,但这将帮助您入门。

于 2014-12-22T19:04:28.380 回答
0

我认为,先看一下这个先前的答案,因为它解释了您需要的原则。

将控件添加到框架

于 2013-03-20T17:46:51.587 回答
0
UserForm1.Controls("Checkbox" & i).Value 
于 2016-07-06T02:25:35.720 回答