我有一個組合框(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