最终的演示效果:
演示效果
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
最后:如果需要源文件,可以私信我
喜欢就关注一下,收藏一下,转发一下,就是给小编的支持!谢谢。