最終的演示效果:
1、準備工作
根據自己工作的的實際情況,首先準備好數據。
2、添加組合框
點擊開發工具-插入-選擇ActiveX中的組合框控件,分別添加三個,組合框默認的名字分別是:ComboBox1,ComboBox2,ComboBox3,分別對應省,市,地區,然後自己排版一下控件的位置即可。
3、進入後臺編寫代碼
二種方式可以進去後臺
第一種方式:可以按組合鍵Alt+F11。
第二種方式:選擇開發工具-VisualBasic。
進入後臺後,雙擊左側ThisWorkbook,在右側寫入一以下代碼:
然後再雙擊Sheet1(DropDown),這個DropDown就是你給表格命名的名字,這一步你根據自己的實際情況就行,你的數據在哪個表格,就雙擊進去,在右側代碼區域寫入以下代碼:
ThisWorkbook代碼:
Private Sub Workbook_Open()
Dim ar As Variant
Dim j As Integer
Dim str As String
'下面的語句是把省,市,地區的數據賦值給數組變量ar,也包含了標題
ar = Sheet1.Range("A7").CurrentRegion
'j=2開始就是把標題給忽略,直接從數據開始循環
For j = 2 To UBound(ar)
'把省數據去重,並用逗號連接起來
If InStr(str & ",", "," & ar(j, 1) & ",") = 0 Then str = str & "," & ar(j, 1)
Next
'上個循環語句塊結束後,str變量裡面的值是:",所有,河北,河南,湖北"
Sheet1.ComboBox1.List = Split(Mid(str, 2), ",") '把前面的逗號去掉賦值給組合框1
Sheet1.ComboBox2.Clear '清空組合框2數據
Sheet1.ComboBox3.Clear '清空組合框3數據
End Sub
Sheet1(DropDown)代碼:
Private Sub ComboBox1_Change()
ComboBox2.ListIndex = -1 '清空市組合框2數據
ComboBox3.ListIndex = -1 '清空地區組合框3數據
If ComboBox1.ListIndex > -1 Then '省組合框如果選擇了某一數據,如:"河南省"
ComboBox2.List = Split(Cmbo(1), ",") '把"河南省"後面的"去重的市數據"(新鄉)賦值給組合框2
End If
End Sub
Private Sub ComboBox2_Change()
If ComboBox2.ListIndex > -1 Then '市組合框如果選擇了某一數據,如:"新鄉"
ComboBox3.List = Split(Cmbo(2), ",") '把"新鄉"後面的"去重地區數據"(牧野區,紅旗區)賦值給組合框3
End If
End Sub
'如果參數傳過來的是1,把把"河南省"後面的"去重的市數據"(新鄉)賦值給組合框2
'如果參數傳過來的是2,'把"新鄉"後面的"去重地區數據"(牧野區,紅旗區)賦值給組合框3
Function Cmbo(j)
Dim n As Integer
Dim i As Integer
Dim ar As Variant
Dim str As String
ar = Range("A7").CurrentRegion
For i = 1 To UBound(ar)
For n = 1 To j
If ar(i, n) <> Sheet1.OLEObjects("ComboBox" & n).Object.Value Then Exit For
Next n
If n = j + 1 And InStr(str & ",", "," & ar(i, n) & ",") = 0 Then
str = str & "," & ar(i, n)
End If
Next
Cmbo = Mid(str, 2)
End Function
最後:如果需要源文件,可以私信我
喜歡就關注一下,收藏一下,轉發一下,就是給小編的支持!謝謝。
閱讀更多 Excel學習筆記 的文章