Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/forms/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Forms VB是否可以使用循环来控制多个窗体控件?_Forms_Excel_Loops_Excel 2010_Vba - Fatal编程技术网

Forms VB是否可以使用循环来控制多个窗体控件?

Forms VB是否可以使用循环来控制多个窗体控件?,forms,excel,loops,excel-2010,vba,Forms,Excel,Loops,Excel 2010,Vba,我在Excel 2010中工作,它是VB编辑器。我有一个有6个组合框的表单,当我初始化表单时,同样的事情需要发生在所有6个组合框上。目前,我必须为各种组合框编写相同的代码行,如下所示 Private Sub Form_Initialize() Dim Table As ListObject Set Table = ThisWorkBook.Worksheets("Sheet1").ListObjects("Table1") Dim Rows As Integer

我在Excel 2010中工作,它是VB编辑器。我有一个有6个组合框的表单,当我初始化表单时,同样的事情需要发生在所有6个组合框上。目前,我必须为各种组合框编写相同的代码行,如下所示

Private Sub Form_Initialize()
    Dim Table As ListObject
    Set Table = ThisWorkBook.Worksheets("Sheet1").ListObjects("Table1")
    Dim Rows As Integer
    Rows = Table.ListRows.Count
    Dim i As Integer

    With Me.ComboBox_1
        .Clear
        .Value = Empty
        For i = 1 to Rows
            .AddItem Table.DataBodyRange(i, 1)
        Next i
    End With

    With Me.ComboBox_2
        .Clear
        .Value = Empty
        for i = 1 to Rows
            .AddItem Table.DataBodyRange(i, 1)
        Next i
     End With

    'This repeats for another 4 comboboxes (ComboBox_3, ComboBox_4,
    'ComboBox_5 and ComboBox_6)

 End Sub
一次又一次地编写相同的代码变得非常烦人,尤其是当我想要更改组合框的过程并且还必须更新其他5个代码时

可以为每个组合框编写循环的单个代码吗?

是的

确保每个组合框的名称相同,但在每个组合框的末尾都有一个对应的整数。例如,组合框应命名为ComboBox1、ComboBox2、ComboBox3、ComboBox4、Combox5和Combox6

Private Sub Form_Initialize()
    Dim Table As ListObject
    Set Table = ThisWorkbook.Worksheets("Sheet1").ListObjects("Table1")
    Dim Rows As Integer
    Rows = Table.ListRows.Count
    Dim i As Integer
    Dim j As Integer

    For j = 1 To 6
        With Me.Controls("ComboBox" & j)
            .Clear
            .Value = Empty
            For i = 1 To Rows
                .AddItem Table.DataBodyRange(i, 1)
            Next i
        End With
    Next j

End Sub

这应该每次都可以使用,并且在创建用户表单等时非常有用。

类似于?或?谢谢,谢天谢地,我已经按照您提到的方式命名了我的控件。我尝试过类似的方法,但基本上没有Me。控件,但显然不起作用。