如何在VBA中循环遍历类似的对象

时间:2014-07-16 13:05:20

标签: vba loops for-loop userform

我在VBA中有一个包含一些图片的用户窗体。我需要遍历15张名称如下的照片:

  

imm1,imm2,...,imm15

我为照片创建路径:

dir1 = "c:\..\pi1.jpg"
...
dir15 = "c:\..\pi15.jpg"

我想创建一个循环:

    For i = 1 To 15
    (imm & i).Visible = True
   (imm & i).Picture = LoadPicture(dir & i)
    Next i

这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

您可以在用户表单的Controls属性中使用它的名称引用每个图像,如下所示:

Public Sub VisibleImages()

Dim i As Integer

For i = 1 To 15
    Me.Controls("imm" & i).Visible = True
Next i

End Sub

注意:如果要在userforms代码模块之外使用该过程,则可能需要将Me更改为userform的名称。

答案 1 :(得分:1)

我非常喜欢这种语法:

Private Sub CommandButton1_Click()
    Dim cCont As Control

    For Each cCont In Me.Controls
        If TypeName(cCont) = "Image" And VBA.Left$(cCont.Name, 3) = "imm" Then
           cCont.Visible = True
           cCont.Picture = LoadPicture("c:\..\pi" & VBA.Right$(cCont.Name, Len(cCont.Name) - 3) & ".jpg")
        End If
    Next cCont
End Sub