我在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个其他代码时变得特别烦人。
是否可以为每个组合框编写一个循环的代码?
答案 0 :(得分:2)
是的。
确保每个组合框的名称相同,但每个组合的末尾都有一个相应的整数。例如,组合框应该命名为ComboBox1,ComboBox2,ComboBox3,ComboBox4,ComboBox5和ComboBox6。
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
这应该每次都有效,在创建用户表单等时非常有用。