Excel中使用VBA编程实现其他sheet页中栏位的显示与隐藏?请大神帮忙

Sunshine@扬 2018-06-05 10:45:32
我现在接到一个需求,是这样的,先举个例子:
一个Excel文件中有4个Sheet页,分别为Sheet1/Sheet2/Sheet3/Sheet4;
其中Sheet1为选项页面可以让用户选择月份(可多选);Sheet2/Sheet3/Sheet4(列名一样)页面分别对应三个区域的销售数据,
现在的需求是根据Sheet1选中的月份显示出各区域Sheet2/Sheet3/Sheet4中月份的销售数据,未选中的月份隐藏;
我现在的想法是在sheet1中插入列表框(可多选),增加一个按钮用来调用宏;
但是之前没有用过VBA,想请各位大神帮忙想想具体怎么实现?
另附上Sheet1的截图:
Sheet2/Sheet3/Sheet4截图:
...全文
1863 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sunshine@扬 2018-06-06
  • 打赏
  • 举报
回复
感谢回复,如果有变通的做法,麻烦说明下具体怎么实现?如果是利用ActiveX控件
舉杯邀明月 2018-06-06
  • 打赏
  • 举报
回复
可在4楼代码第6行加入代码: If (0 = ListBox1.ListCount) Then Exit Sub 这样可避免“空列表”引起运行异常。
舉杯邀明月 2018-06-06
  • 打赏
  • 举报
回复
参考如下代码。 注意你的 ListBox的控件名! 若不同自己修改。
Option Explicit

Private 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 Sub

Private Sub CommandButton2_Click()
' 添加列表数据。可以写在别的过程中,“打开文档”时执行一次。
   Dim i As Long

   Call ListBox1.Clear
   ListBox1.MultiSelect = 1
   For i = 1 To 12
      ListBox1.AddItem i & "月份"
   Next
End Sub
舉杯邀明月 2018-06-06
  • 打赏
  • 举报
回复
哦,对了,你的“月份”是B列到M列,要把上面代码9到11行中 1&+i 改为 2&+i 。
舉杯邀明月 2018-06-05
  • 打赏
  • 举报
回复
从你的截图来看, 是插入的“窗体控件”。 这个好像没法“获取数据”、判断是否选择了某项。 需要用 ActiveX 控件,才可以在VBA中获取状态信息。
脆皮大雪糕 2018-06-05
  • 打赏
  • 举报
回复
把你要隐藏的东西放到单独的列或者单独的sheet上。隐藏sheet或者隐藏列。这期间录制宏,然后就能看到具体的代码应该咋写了

2,462

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧