7个回答
展开全部
确定要用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)
下面试下,你会发现单关联的下拉列表出来!
展开全部
刚好以前做过类似的,添加窗体
窗体代码
Private Sub ComboBox1_Change()
Call 刷新二级
UserForm5.TextBox1.Text = UserForm5.ComboBox1.Text & "公司" & UserForm5.ComboBox2.Text & "部门"
End Sub
Private Sub ComboBox2_Change()
UserForm5.TextBox1.Text = UserForm5.ComboBox1.Text & "公司" & UserForm5.ComboBox2.Text & "部门"
End Sub
模块代码
Sub 刷新一级()
Dim a As String
Dim i%, j%, m%
Dim b As Boolean
UserForm5.ComboBox1.Clear
For i = 2 To Sheet3.Range("M65536").End(xlUp).Row
If Sheet3.Cells(i, 11) <> "" Then UserForm5.ComboBox1.AddItem (Sheet3.Cells(i, 11))
Next i
UserForm5.ComboBox1.Text = UserForm5.ComboBox1.List(0)
End Sub
Sub 刷新二级()
Dim a As String
UserForm5.ComboBox2.Clear
a = UserForm5.ComboBox1.Text
i = 2
While Sheet3.Cells(i, 11) <> a
i = i + 1
Wend
k1 = i
i = k1 + 1
While Sheet3.Cells(i, 11) = "" And i <= Sheet3.Range("L65536").End(xlUp).Row
i = i + 1
Wend
k2 = i - 1
UserForm5.ComboBox2.AddItem (Sheet3.Cells(k1, 13))
For i = k1 + 1 To k2
b = False
m = UserForm5.ComboBox2.ListCount - 1
For j = 0 To m
If Sheet3.Cells(i, 13) = UserForm5.ComboBox2.List(j) Then b = True
Next j
If b = False Then UserForm5.ComboBox2.AddItem (Sheet3.Cells(i, 13))
Next i
UserForm5.ComboBox2.Text = UserForm5.ComboBox2.List(0)
End Sub
Sub a()
UserForm5.Show 0
Call 刷新一级
Call 刷新二级
End Sub
执行宏a就可以了,下面是我的测试图
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这可比较复杂,10财富奖励太少了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2018-03-01 · 知道合伙人软件行家
关注
展开全部
数据源在哪里?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
请详细介绍你的需求。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询