我有一个组合框(GSMListType)具有不同的变量“A”, “A - K”, “B”, “C”,等。链接到列表框(AvailableNumberList),其根据组合框中的选择调用来自不同工作表的单元格。 组合框有32个不同的变量,它们调用32张不同的纸张。以下是代码示例。VBA的Excel - Simplifiying对于要起作用的IF语句
- “A”收集在片A_Regular的数据,并添加其项目到列表框
- “A - K”收集在片A_K的数据,并添加其项目到列表框
- “B “收集在表B_Regular的数据,并增加了其项目到列表框
- ‘C’收集在表C_Regular的数据,并增加了其项目到列表框 等等...
有一种简化b的方法elow提到的代码?该表格功能齐全,但代码混乱。
Private Sub GSMListType_Change()
Dim TypeLookup As Double
'If listing has changed, clear AvailableNumberList and insert new data
If GSMListType.ListIndex > -1 Then
AvailableNumberList.Clear
If GSMListType.Value = "A" Then
TypeLookup = Application.WorksheetFunction.CountIf(A_Regular.Range("A:E"), GSMListType.Value)
With AvailableNumberList
For k = 2 To TypeLookup + 1
.AddItem A_Regular.Range("A" & k).Value
Next k
End With
ElseIf GSMListType.Value = "A - K" Then
TypeLookup = Application.WorksheetFunction.CountIf(A_K.Range("A:E"), GSMListType.Value)
With AvailableNumberList
For k = 2 To TypeLookup + 1
.AddItem A_K.Range("A" & k).Value
Next k
End With
ElseIf GSMListType.Value = "B" Then
TypeLookup = Application.WorksheetFunction.CountIf(B_Regular.Range("A:E"), GSMListType.Value)
With AvailableNumberList
For k = 2 To TypeLookup + 1
.AddItem B_Regular.Range("A" & k).Value
Next k
End With
ElseIf GSMListType.Value = "C" Then
TypeLookup = Application.WorksheetFunction.CountIf(C_Regular.Range("A:E"), GSMListType.Value)
With AvailableNumberList
For k = 2 To TypeLookup + 1
.AddItem C_Regular.Range("A" & k).Value
Next k
.
.
.
End With
End If
End If
End Sub