上一篇和大家分享了公式版本的二级菜单制作,今天分享一篇VBA版本的二级菜单。
VBA版本不需要过多的辅助项,这里只需要一列区域负责人一列店铺即可,E2单元格放置菜单选择的项,用作后面提取数据的条件。
依次点击开发工具→插入→ActiveX控件中的组合框,然后点击表格中你想放置的位置。
如何知道控件是ComboBox几?
说明:点击开发工具→设计模式可以修改控件的属性和移动位置,取消设计模式才可以进行控件点选操作。
代码放置位置:
然后利用公式提取数据作为图表数据源即可制作动态图。
部分代码解释:
Thisworkbook内
arr = Sheets("店铺及数据").Range("a2:a17")等于号之后括号内代码需要修改;
Sheets("图表展示").ComboBox1.List= d.items 中Sheets("图表展示").ComboBox1需要修改为实际的;
Sheet内
arr = Sheets("店铺及数据").Range("a2:b17")等于号之后括号内代码需要修改为实际的;
Sheets("图表展示").ComboBox2.List= d.items中Sheets("图表展示").ComboBox2需要修改为实际的;
Sheets("店铺及数据").Range("e2")= ComboBox1.Text中Sheets("店铺及数据").Range("e2")和ComboBox1需要修改为实际的;
Sheets("店铺及数据").Range("e2")= ComboBox2.Text中Sheets("店铺及数据").Range("e2")和ComboBox2需要修改为实际的。
Private Sub Workbook_Open()
'只需要修改备注说明的两个位置
Dim d
Set d = CreateObject("scripting.dictionary")
arr = Sheets("店铺及数据").Range("a2:a17") '区域负责人数据所在位置
For i = 1 To UBound(arr)
If Not d.exists(arr(i, 1)) Then
d(arr(i, 1)) = arr(i, 1)
End If
Next
Sheets("图表展示").ComboBox1.List = d.items '图表展示表的组合框1赋值,也就是一级菜单赋值
End Sub
Private Sub ComboBox1_Change()
'只需要修改备注说明的三个位置
Dim d
ComboBox2.Text = ""
Set d = CreateObject("scripting.dictionary")
arr = Sheets("店铺及数据").Range("a2:b17") '区域负责人及对应店铺数据所在位置
For i = 1 To UBound(arr)
If arr(i, 1) = ComboBox1.Text Then
d(i) = arr(i, 2)
End If
Next
Sheets("图表展示").ComboBox2.List = d.items '图表展示表的组合框2赋值,也就是二级菜单赋值
Sheets("店铺及数据").Range("e2") = ComboBox1.Text '将组合框1的选项放在店铺及数据表的E2单元格
End Sub
Private Sub ComboBox2_Change()
'只需要修改备注说明的位置
Sheets("店铺及数据").Range("e2") = ComboBox2.Text '将组合框2的选项放在店铺及数据表的E2单元格
End Sub
