VBA動態聯動下拉組合框學習範例,想提高的速看

最終的演示效果:

VBA動態聯動下拉組合框學習範例,想提高的速看

演示效果

1、準備工作

根據自己工作的的實際情況,首先準備好資料。

2、新增組合框

點選開發工具-插入-選擇ActiveX中的組合框控制元件,分別新增三個,組合框預設的名字分別是:ComboBox1,ComboBox2,ComboBox3,分別對應省,市,地區,然後自己排版一下控制元件的位置即可。

VBA動態聯動下拉組合框學習範例,想提高的速看

新增組合框

3、進入後臺編寫程式碼

二種方式可以進去後臺

第一種方式:可以按組合鍵Alt+F11。

第二種方式:選擇開發工具-VisualBasic。

進入後臺後,雙擊左側ThisWorkbook,在右側寫入一以下程式碼:

VBA動態聯動下拉組合框學習範例,想提高的速看

thisworkbook的程式碼

然後再雙擊Sheet1(DropDown),這個DropDown就是你給表格命名的名字,這一步你根據自己的實際情況就行,你的資料在哪個表格,就雙擊進去,在右側程式碼區域寫入以下程式碼:

VBA動態聯動下拉組合框學習範例,想提高的速看

表格後臺程式碼

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

最後:如果需要原始檔,可以私信我

喜歡就關注一下,收藏一下,轉發一下,就是給小編的支援!謝謝。