如何用vba给用户窗体动态的添加控件?

在vba中也可以使用窗体。

在窗体的设计状态下,可以添加各种控件。

有时候我们希望通过vba代码在窗体中动态的添加控件,而不是事先在窗体中添加控件再写代码。

在vba中可以使用UserForm对象的Controls.Add方法动态添加控件,它的语法如下:

其中ProgID参数为要添加的控件的程序标识符,Name参数为要添加的控件的名称, Visible参数设置该控件是否可见。

常见的控件的ProgID如下:

CheckBox Forms.CheckBox.1
ComboBox Forms.ComboBox.1
CommandButton Forms.CommandButton.1
Frame Forms.Frame.1
Image Forms.Image.1
Label Forms.Label.1
ListBox Forms.ListBox.1
MultiPage Forms.MultiPage.1
OptionButton Forms.OptionButton.1
ScrollBar Forms.ScrollBar.1
SpinButton Forms.SpinButton.1
TabStrip Forms.TabStrip.1
TextBox Forms.TextBox.1
ToggleButton Forms.ToggleButton.1

如下的代码将在用户窗体UserForm1中添加10个标签控件和10个文本框控件:

如下图所示,其中两个命令按钮是在设计状态下添加的。

当控件是在vba代码的运行阶段动态添加的,如果要访问控件的内容,需要用如下的加感叹号的引用形式:

比如要读取上图中的第一个文本框的内容,可以使用如下的代码:

其中Txt1为动态添加文本框时指定的名称。





       

发表评论