通过特定组合框(阵列)循环

时间:2013-10-27 23:04:21

标签: vba ms-access access-vba

我只需要重新查询表单中的特定组合框,我想在一个数组中使用它。组合框不按顺序排列,我不想遍历表单中的所有组合框。

我可以将它与之比较的最佳方法是在Excel中循环查看指定的工作表:

Dim ws As Worksheet
For Each ws In Worksheets("Sheet1", "Sheet4", "Sheet7")
    ' do something
Next ws

我无法弄清楚如何在Access中执行此操作。我尝试过这种变体:

For Each Control In Me.Controls(Me.cbo1, Me.cbo4, Me.cbo7)
    Control.Requery
Next Control

2 个答案:

答案 0 :(得分:0)

有几种方法,但您可以将它们放在Collection

Private Sub Command7_Click()
    Dim coll As New Collection
    Dim item As ComboBox

    coll.Add Me.Combo1
    coll.Add Me.Combo5
    coll.Add Me.Combo3

    For Each item In coll
        item.Requery
    Next item
End Sub

答案 1 :(得分:0)

对于轻量级方法,您可以将组合框名称放在以逗号分隔的字符串中,将Split()字符串放入数组中,然后循环遍历数组成员。

Const cstrNames As String = "cbo1,cbo4,cbo7"
Dim varName As Variant

For Each varName In Split(cstrNames, ",")
    Me.Controls(varName).Requery
Next

如果要在表单中的其他过程之间共享该列表,可以使字符串成为模块级常量,而不是在每个过程中再次声明它。