excel vba中能否动态创建控件

我想创建一组复选框,是跟据EXCEL表格里的数据来创建的,就是要计算才知道要多少个
想用VBA弹出一个窗口,然后在窗口上动态创建,请问能否实现
VB就可以轻易实现
比如
Dim i As Integer
For i = 1 To 3
Load Check1(i)
Check1(i).Caption = "Check" & CStr(i + 1)
Check1(i).Top = Check1(i - 1).Top + 500
Check1(i).Left = Check1(0).Left
Check1(i).Visible = True
Next
但是在VBA在就提示出错
有没高手帮个忙
究竟是不支持这样的功能还是另有方法

1.数据做好,在旁边增加一列辅助列,并输入如图公式。

2.公式下拉,报表数据有多少行,就拉到多少行。

3.工具栏-开发工具-插入-组合框。

4.在工作表中画出控件,右击控件,设置控件格式。

5.如图设置,先把报表的各类名称依次排列下来。

6.选中辅助列数据-插入图表-三维柱形图。

7.右击选中控件-单击按住控件移到图表内,再进行图表美化,就成了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-09-21
把下面的代码添加到Userform下面的Initialize事件中,也就是窗体启动时候做的事。
Private Sub UserForm_Initialize()
Dim ChkBox As Control
Dim I As Integer
For I = 1 To 3
Set ChkBox = UserForm1.Controls.Add("Forms.CheckBox.1", "Chk" & Str(I))
ChkBox.Top = 2 + 25 * (I - 1)
ChkBox.Height = 20
ChkBox.Width = 100
ChkBox.Left = 2
ChkBox.Caption = "I am ChkBox" & Str(I)
Set ChkBox = Nothing
Next
End Sub

或者,你也可以把这段代码添加到一个过程中如下,但是记住,Showform一定要在你添加控件之后。

Sub test()
Dim ChkBox As Control
Dim I As Integer
For I = 1 To 3
Set ChkBox = UserForm1.Controls.Add("Forms.CheckBox.1", "Chk" & Str(I))
ChkBox.Top = 2 + 25 * (I - 1)
ChkBox.Height = 20
ChkBox.Width = 100
ChkBox.Left = 2
ChkBox.Caption = "I am ChkBox" & Str(I)
Set ChkBox = Nothing
Next
UserForm1.Show
End Sub本回答被提问者采纳