根据参数在用户窗体中创buildcheckbox

我想要一个用户select他想要创build一个新的文本行。 但是他可以select的纸张数量可能随着时间的推移而变化,我不想对纸张名称进行硬编码。

这是一个我想要做的例子(“o”代表checkbox):

o 01.2013 o 07.2013 o 01.2014 o 07.2014 

我创build了一个空框架的用户窗体来放置我的checkbox,并将这一点代码添加到用户窗体中:

 Private Tck(10) As MSForms.CheckBox Private Sub UserForm_Initialize() Dim ws As Worksheet Dim i As Long i = 1 For Each ws In ActiveWorkbook.Worksheets If Left(ws.Name, 3) = "T2M" Then Set Tck(i) = Frame1.Controls.Add("Forms.Checkbox.1", "Checkbox" & i) Tck(i).Caption = Right(ws.Name, 7) i=i+1 End If Next End Sub 

但是它只增加了一个checkbox和validationiftesting的最后一张表格。

我试图做两个迭代之间的偏移量,但我不能修改Tck(i)的位置,例如使用Tck(i).top

我也尝试了这个问题的答案: 使用VBA将控件添加到Excel用户窗体中的框架,但它也不起作用。

你的checkbox在那里,你不能看到他们,因为他们被叠加在一起。 你有正确的想法,改变“顶”的价值。

 Public Sub addCheckboxes() Dim ws As Worksheet Dim i As Integer Dim tck As MSForms.CheckBox Dim offset As Integer: offset = 5 For i = 1 To Worksheets.Count Set ws = Worksheets(i) Set tck = Frame1.Controls.Add("Forms.Checkbox.1", "Checkbox" & i, True) tck.Top = offset offset = offset + 15 Next i End Sub