vba - 调用对象时是否可以包含变量
问题描述
我有一个在用户窗体上放置多个名称框和标签的代码。代码非常重复,但我不知道如何创建一个 for 循环来更改我关注的对象。
我尝试使用包含在对象名称中的变量创建一个循环,例如:
Me.Box(i).Top
For i = 1
Me.Box(i).Top = hauteur / 4
Me.Box(i).Left = (i * espace) + (i-1 * lbox)
Me.Label(i).Top = Me.Box(i).Top - 2 * hbox
Me.Label(i).Left = Me.Box(i).Left
Next i
(我所有的盒子都命名为box1到box 7)
这是我的代码的样子:
Me.Box1.Top = hauteur / 4
Me.Box1.Left = espace
Me.Label1.Top = Me.Box1.Top - 2 * hbox
Me.Label1.Left = Me.Box1.Left
Me.Box2.Top = hauteur / 4
Me.Box2.Left = (2 * espace) + lbox
Me.Label2.Top = Me.Box2.Top - 2 * hbox
Me.Label2.Left = Me.Box2.Left
Me.Box3.Top = hauteur / 4
Me.Box3.Left = 3 * espace + 2 * lbox
Me.Label3.Top = Me.Box3.Top - 2 * hbox
Me.Label3.Left = Me.Box3.Left
ETC...
我正在为我正在做的循环类型寻找正确的语法!
解决方案
您需要使用控件集合,它将接受字符串索引
for i = 1 to 7
with Me.controls("Box" & i)
.Top = hauteur / 4
.Left = espace
Me.controls("Label" & i).Top = .Top - 2 * hbox
Me.controls("Label" & i).Left = .Left
end with
next i
推荐阅读
- ios - Swift3 - 二元运算符“==”不能应用于“AnyObject?”类型的操作数 和“文件属性类型”
- powershell - 使用 CSV 附加文件名
- scala - 带有 Graph DSL 的 Websocket
- cygwin - 带有 Cygwin 的 Conda:已创建环境,但未找到位置且激活后无法使用
- regex - 如何构建正则表达式来查找字符串
- powerbi - 尝试使用 LOOKUPVALUE 根据当前表中单元格的值返回特定单元格的值
- apache-kafka - Kafka Sink HDFS 无法识别的令牌
- sql - (简单)presto SQL中日期转换的SQL查询
- web-services - Delphi SOAP 请求
- php - 使用 php、curl 和 api 远程登录网站