使用代码添加窗体及控件
Private Sub CommandBu tton1_Cli ck()
Dim myForm As VBCompone nt
Dim myTextBox As Control
Dim myButton As Control
Dim
i
As
Integer
Set myForm = ThisWorkb ook.VBPro ject.VBCo mponents. Add(vbext _ct_MSFor m)
常量
值
描述
vbext_ct_Cl 2 assModule
Vbext_ct_M 3 SForm
将 一个类模 块 添加到集 合
将 窗体添加 到集合
vbext_ct_St 1 dModule
将 标准模块 添加到集合
表格 150 ?co1mponent 第 8 行到第
11 行 代 码,使用 VBCompo nent 对 象 的 Properties 属性设置 用户窗体 的相关属 性。
With myButton
.Name = "myButton "
.Caption = " 删除文 本框 "
.Top = 70
.Left
=
138
.Height = 20
.Width
=
70
End With
With .CodeModu le
i
=
.CreateEv
entProc("
Click",
"myTextBo
x")
.ReplaceL
ine i +
1,
Space(4)
&
"Dim
myTextBox
As Control"
& Chr(10)
&
Space(4)
& "Dim i
As Integer"
& Chr(10)
&
Space(4)
& "Dim k
As
Integer" _
& Chr(10)
&
Space(4)
& "k =
With myForm
.Properti
es("Name"
)
=
"Formtest
"
.Properti es("Capti on") = " 演示窗体 "
.Properti
es("Heigh
t")
=
"180"
.Properti
es("Width
")
=
"240"
Set myTextBox = .Designer .Controls .Add("For man dButton.1 ")
参数值
第 12 行 代
码,使用
Add 方法添
加在用户
窗体上添
加一个按 钮控件。
VBCompo
nent 对 象
的
Designer
属性返回
一个设计
器对象,
其 Controls
属性返回
Controls 集
合,代表
用户窗体 中所有的
控件。应
用
于
Controls 集
合对象的
Add 方法在
用户窗体 中添加控
件,语法 如下:
发生错误
请在菜单
“工具”
→“引用 ”中引用
“ Microsoft
Visual
Basic for
Applicatio
ns
Extensibilit
y 5.3 ” ,
如
图
150 ?1 所示 。
图 150 ?1
第6行代
码,使用 Add 方法添 加用户窗 体,应用 于 VBCompo
nents 集 合 的 Add 方法
Space(12)
& ".Width
= 80" _
& Chr(10) &
Space(12)
& "k =
.Top
+
Hale Waihona Puke 28"&
Chr(10) &
Space(8)
&
"End
With"
&
Chr(10) &
Space(4)
& "Next"
i
=
.CreateEv
entProc("
Click",
"myButton ")
"
&
Chr(10) &
Space(12)
& ".Name
=
""myTextB
ox"" & i"
& Chr(10)
&
Space(12)
& ".Left
= 20" _
& Chr(10)
&
Space(12)
& ".Top =
k"
&
Chr(10) &
Space(12)
&
".Height
= 18" &
Chr(10) &
.ReplaceL
ine i +
1,
Space(4)
& "Dim i
As
Integer"
& Chr(10)
&
Space(4)
&
"On
Error Resume
Next"
&
Chr(10) &
Space(4)
& "For i
= 1 To 5"
& Chr(10) &
Space(8)
&
"Formtest
.Controls
object.Ad
d( ProgID
[,
Name
[,
Visible]]
With myTextBox
.Name = "myTextBo x"
.Caption = " 新建文 本框 "
.Top = 40
.Left
=
138
.Height = 20
.Width
=
70
End With
Set myButton = .Designer .Controls .Add("For man dButton.1 ")
10"
&
Chr(10) &
Space(4)
& "For i
= 1 To 5"
& Chr(10)
&
Space(8)
&
"Set
myTextBox
=
Me.Contro
ls.Add(bs
trprogid:
=""Forms.
TextBox.1
"")" _
& Chr(10)
&
Space(8)
& "With
myTextBox
.Remove ""myTextB
ox"" & i"
& Chr(10)
&
Space(4)
& "Next"
End With
End With
End Sub
代码解 析: 使用代码 添加一个 用户窗体 及其两个 按钮控 件,并为 按钮控件 添加单击 事件及其 相应的代 码。
第 2 行到第
5行代码声
明变量类 型,如果
技巧 1
使用
代码添
加窗体
及控件
VBA 中 的 用户窗体 为用户提 供了可视 化的操作 界面,在 用户窗体 中一般都 包含控件 以便与用 户进行交 互。我们 通常是在 VBE 中 使 用菜单“ 插入”→ “用户窗 体”来创 建用户窗 体,然后 拖动工具 箱中的控 件到用户 窗体中, 也可以使 用代码来 添加用户 窗体及其 控件,代 码如下:
将一个对 象添加到 集合,语 法如下:
object.Ad d(compone nt)
参
数
object 是
必需的, 一
个有效的
对象名。
引用
参
数
component
是 必需 的,
对
于
VBCompo
nents 集
合,则为 表示类模
块、窗体 、标准模 块的列举
常数,可 以为表格
150 ?1 所示 的常量之
一。