在对象名称中使用变量(VBA Excel)

时间:2015-07-23 15:18:43

标签: excel vba excel-vba

这是我想要做的:

Private Function foo(bar As Integer)
    For n = 0 To ComboBox(bar).ListCount - 1
       [some stuff]
    End For
End Function

我在第二行收到错误,因为我正在使用(bar),而不是(例如)2或3。

我能完成我想做的事吗?

2 个答案:

答案 0 :(得分:2)

如果这是在用户表单上,您可以使用:

For n = 0 To Me.Controls("ComboBox" & bar).ListCount - 1

如果是工作表模块和ActiveX组合框,则需要:

For n = 0 To Me.OLEObjects("ComboBox" & bar).Object.ListCount - 1

答案 1 :(得分:1)

尝试将控件的名称发送到函数:

Private Function foo(bar As String)
    For n = 0 To Me.Controls(bar).ListCount -1
       [some stuff]
    Next n 
End Function

或者,如果您使用(例如)ComboBox1,ComboBox2,ComboBox3 ... ComboBoxN您可以这样做:

Private Function foo(bar As String)
    For n = 0 To Me.Controls("ComboBox" & bar).ListCount -1
       [some stuff]
    Next n 
End Function