首页 > 解决方案 > 调用对象时是否可以包含变量

问题描述

我有一个在用户窗体上放置多个名称框和标签的代码。代码非常重复,但我不知道如何创建一个 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...

我正在为我正在做的循环类型寻找正确的语法!

标签: vbafor-loop

解决方案


您需要使用控件集合,它将接受字符串索引

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

推荐阅读