作者:乔山办公网日期:
返回目录:excel表格制作
1
FOR i=1 to 5
combobox1.add sheets("定义的知名道称版权").cells(1,i)
next
2
select case combobox1.value
case "上装"
for i=1 to 100
if sheets("定义的名称").cells(i,1)="" then exit for
combobox2.add sheets("定义的名称").cells(i,1)
next
calse "下装"
for i=1 to 100
if sheets("定义的名称").cells(i,2)="" then exit for
combobox2.add sheets("定义的名称").cells(i,2)
next
..
.
.
.
.
你可以试试,下面是我自己以前弄的窗体三级下拉菜单
Private Sub UserForm_Initialize() '将一级菜单复制,二级和三级的列表为空
Me.ComboBox1.List = Array("中国", "中国人")
End Sub
Private Sub ComboBox1_Change() '当一级菜单的值改变了,e799bee5baa6e997aee7ad94e58685e5aeb9330将二级菜单赋值
Dim a, b1, b2
b1 = Array("广东", "海南")
b2 = Array("广东人", "海南人")
If ComboBox1.Text = "" Then
Exit Sub
Else
If ComboBox1.Text = "中国" Then
Me.ComboBox2.List = b1
Else
Me.ComboBox2.List = b2
End If
End If
End Sub
Private Sub ComboBox2_Change() '当二级菜单的值改变了,将三级菜单赋值
Dim a, b1, b2
b1 = Array("广州", "深圳")
b2 = Array("海口", "三亚")
b3 = Array("广州人", "深圳人")
b4 = Array("海口人", "三亚人")
If ComboBox2.Text = "" Then
Exit Sub
Else
If ComboBox2.Text = "广东" Then
Me.ComboBox3.List = b1
ElseIf ComboBox2.Text = "海南" Then
Me.ComboBox3.List = b2
ElseIf ComboBox2.Text = "广东人" Then
Me.ComboBox3.List = b3
ElseIf ComboBox2.Text = "海南人" Then
Me.ComboBox3.List = b4
End If
End If
End Sub
确定要用VBA,这个来完全可以通过公式解决。以上表为例,操作如下:
分别将自A列、C列、G列,命名为:公司、部门、员工
设计如下图所示的表2
分别在B1\D1\F1设置“百数据验证-序列”如图
在来源处输入:
B1: =OFFSET(公司度,1,0,COUNTA(公司)-1,1)
D1: =OFFSET(部门知,1,MATCH($B$1&"公司部门",OFFSET(部门,0,0,1,COUNTA(公司)-1),0)-1,COUNTA(OFFSET(部门,0,MATCH($B$1&"公司部门",OFFSET(部门,0,0,1,COUNTA(公司)-1),0)-1,,1))-1,1)
F1: =OFFSET(员工,1,MATCH($B$1&"公司员工",OFFSET(员工,0,0,1,COUNTA(公司)-1),0)-1,COUNTA(OFFSET(员工,0,MATCH($B$1&"公司员工",OFFSET(员工,0,0,1,COUNTA(公司)-1),0)-1,,1))-1,1)
下面试下,你道会发现单关联的下拉列表出来!