Forms VB是否可以使用循环来控制多个窗体控件?
我在Excel 2010中工作,它是VB编辑器。我有一个有6个组合框的表单,当我初始化表单时,同样的事情需要发生在所有6个组合框上。目前,我必须为各种组合框编写相同的代码行,如下所示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
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。控件,但显然不起作用。