VBA循环通过连续编号的名称

时间:2018-12-17 13:55:22

标签: vba for-loop

我知道如何在像

这样的括号中循环遍历数字
For i = 0 To (ComboBox4.ListCount - 1)
If ComboBox4.Value = ComboBox4.List(i) Then inList = True
Next i

但是我如何遍历括号中没有的数字?就像连续编号的名字一样:

Me.ComboBox1.Value = ""
Me.ComboBox2.Value = ""
Me.ComboBox3.Value = ""

我尝试过:

for i=1 to 3
"Me.ComboBox"&i&".Value" = ""
next i

但这不起作用。看起来如何?

2 个答案:

答案 0 :(得分:3)

您将使用Controls集合。

例如:

Me.Controls("ComboBox" & i)  

修改:
由于表单上的控件是集合的一部分,因此您还可以遍历集合,依次拉动每个控件:

    Private Sub UserForm_Initialize()

        Dim ctl As Control

        For Each ctl In Me.Controls
            If TypeOf ctl Is MSFORMS.ComboBox Then
'           If TypeName(ctl) = "ComboBox" Then
                MsgBox ctl.Name
            End If
        Next ctl

    End Sub

我添加了两种方法来标识@CallumDA建议的控件类型。

Microsoft writes

  • TypeName函数返回一个字符串,当您需要存储或显示对象的类名时,它是最佳选择。
  • TypeOf...Is运算符是测试对象类型的最佳选择,因为它比使用TypeName进行等效的字符串比较要快得多。

答案 1 :(得分:1)

您可以使用控件功能:

Me.Controls("ComboBox" & i).Value = 'your code...