【发布时间】:2014-10-26 15:57:15
【问题描述】:
我希望用户选择他想在哪些工作表上创建新的文本行。但是他能够选择的工作表数量可能会随着时间的推移而变化,我不想硬编码工作表的名称。
这是我打算做的一个例子(“o”代表复选框):
o 01.2013
o 07.2013
o 01.2014
o 07.2014
我创建了一个带有空框的用户表单来放置我的复选框,并将这段代码添加到用户表单中:
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
但它只在最后一张表中添加了一个复选框,用于验证 if 测试。
我尝试在两次迭代之间进行偏移,但我无法修改 Tck(i) 的位置,例如使用 Tck(i).top。
我也尝试了这个问题的答案:Adding controls to a frame in an Excel userform with VBA,但它也不起作用。
【问题讨论】: