我现在接到一个需求,是这样的,先举个例子:
一个Excel文件中有4个Sheet页,分别为Sheet1/Sheet2/Sheet3/Sheet4;
其中Sheet1为选项页面可以让用户选择月份(可多选);Sheet2/Sheet3/Sheet4(列名一样)页面分别对应三个区域的销售数据,
现在的需求是根据Sheet1选中的月份显示出各区域Sheet2/Sheet3/Sheet4中月份的销售数据,未选中的月份隐藏;
我现在的想法是在sheet1中插入列表框(可多选),增加一个按钮用来调用宏;
但是之前没有用过VBA,想请各位大神帮忙想想具体怎么实现?
另附上Sheet1的截图:
Sheet2/Sheet3/Sheet4截图:
一个Excel文件中有4个Sheet页,分别为Sheet1/Sheet2/Sheet3/Sheet4;
其中Sheet1为选项页面可以让用户选择月份(可多选);Sheet2/Sheet3/Sheet4(列名一样)页面分别对应三个区域的销售数据,
现在的需求是根据Sheet1选中的月份显示出各区域Sheet2/Sheet3/Sheet4中月份的销售数据,未选中的月份隐藏;
我现在的想法是在sheet1中插入列表框(可多选),增加一个按钮用来调用宏;
但是之前没有用过VBA,想请各位大神帮忙想想具体怎么实现?
另附上Sheet1的截图:
Sheet2/Sheet3/Sheet4截图:
这个好像没法“获取数据”、判断是否选择了某项。需要用 ActiveX 控件,才可以在VBA中获取状态信息。
注意你的 ListBox的控件名! 若不同自己修改。
Option ExplicitPrivate Sub CommandButton1_Click()
' 按选定的月份进行 显示/隐藏 相应列
Dim i As Long, vs As Boolean For i = 0& To 11
vs = Not ListBox1.Selected(i)
Sheet2.Columns(1& + i).EntireColumn.Hidden = vs
Sheet3.Columns(1& + i).EntireColumn.Hidden = vs
Sheet4.Columns(1& + i).EntireColumn.Hidden = vs
Next
End SubPrivate Sub CommandButton2_Click()
' 添加列表数据。可以写在别的过程中,“打开文档”时执行一次。
Dim i As Long Call ListBox1.Clear
ListBox1.MultiSelect = 1
For i = 1 To 12
ListBox1.AddItem i & "月份"
Next
End Sub
If (0 = ListBox1.ListCount) Then Exit Sub这样可避免“空列表”引起运行异常。