调用对象时是否可以包含变量

时间:2019-08-29 14:30:51

标签: vba for-loop

我有一个代码,可以在用户表单上放置多个名称框和标签。该代码非常重复,但是我不知道如何创建一个for循环来更改我关注的对象。

我尝试用对象名称中包含的变量创建循环:

Me.Box(i)。顶部

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

等...

我正在寻找适合我正在执行的循环类型的语法!

1 个答案:

答案 0 :(得分:1)

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

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