VBA動態聯動下拉組合框學習範例,想提高的速看
最終的演示效果:
演示效果
1、準備工作
根據自己工作的的實際情況,首先準備好資料。
2、新增組合框
點選開發工具-插入-選擇ActiveX中的組合框控制元件,分別新增三個,組合框預設的名字分別是:ComboBox1,ComboBox2,ComboBox3,分別對應省,市,地區,然後自己排版一下控制元件的位置即可。
新增組合框
3、進入後臺編寫程式碼
二種方式可以進去後臺
第一種方式:可以按組合鍵Alt+F11。
第二種方式:選擇開發工具-VisualBasic。
進入後臺後,雙擊左側ThisWorkbook,在右側寫入一以下程式碼:
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
最後:如果需要原始檔,可以私信我
喜歡就關注一下,收藏一下,轉發一下,就是給小編的支援!謝謝。