EXCEL表格,通过VBA公式实现自动隐藏功能。

如果C列和D列中的单元格内容数据同时等于0或者“”,自动隐藏一整行。应该如何实现呢?
我参考这个公式,但不会修改。
Private Sub Worksheet_Calculate()
Dim i As Integer
Application.EnableEvents = False
Cells.EntireRow.Hidden = False
For i = 1 To Cells(1, 1).SpecialCells(xlLastCell).Row()
If Cells(i, 1).Text = "0" Then Cells(i, 1).EntireRow.Hidden = True
Next i
Application.EnableEvents = True
End Sub

1.在工作表界面按下组合快捷键Alt+F11或者右键单击任意一个工作表标签,在弹出的右键快捷菜单单击“查看代码”进入VBA编辑环境,如下图所示:

2.在任意一个模块的代码窗口中输入以下的代码

Sub xyf()

    Sheet1.Visible = xlSheetHidden

End Sub

然后将光标定位于Sub 与End Sub 之间按下快捷键F5运行代码既可以将第一个工作表隐藏。


3.如果要将某个工作表取消隐藏可以使用如下的代码

Sub xyf()

    Sheet1.Visible = xlSheetVisible

End Sub

通过修改工作表对象的Visible属性可以在隐藏和取消隐藏之间切换。



4.如果需要批量隐藏或者取消隐藏多个工作表可以使用如下的代码


Sub xyf()

    '定义一个工作表变量对象

    Dim oWS As Worksheet

    For Each oWS In Excel.ThisWorkbook.Worksheets

        '批量取消隐藏

        oWS.Visible = xlSheetVisible

    Next

End Sub

通过 For Each 。。。Next的循环遍历每一个工作表,通过对每一个工作表的

Visible属性的设置可以实现批量取消隐藏或者批量隐藏工作表。

如下图所示


5.当通过运行以上的代码模式批量隐藏工作表时会弹出如错误提示

Sub xyf()

    '定义一个工作表变量对象

    Dim oWS As Worksheet

    For Each oWS In Excel.ThisWorkbook.Worksheets

        '批量隐藏

        oWS.Visible = xlSheetHidden

    Next

End Sub

这个是因为任意一个工作簿至少要有一个可见的工作表,不能所有工作表都隐藏,可以通过添加一些条件判断代码来解决。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-01-08
要实现你的要求,代码是很简单的。但你应发个样表或截图来,因为你在sheet1表输入数据,不知是怎样分配在sheet2和sheet3的。
第2个回答  推荐于2016-03-27
Private Sub Worksheet_Calculate()
   Dim i As Integer
   Application.EnableEvents = False
   Cells.EntireRow.Hidden = False
   For i = 1 To Cells(1, 1).SpecialCells(xlLastCell).Row()
       If Cells(i, 3).Text = "0" and  Cells(i, 4).Text = "0" Then Cells(i, 1).EntireRow.Hidden = True
   Next i
   Application.EnableEvents = True
End Sub

追问

您好,我的情况是这样的。这个表格的数据是读取另一个表单的。比如:在SHEET1中:C3和D3是为0的,实时地SHEET2中不用手动输入,显示:C3和D3都为0。在SHEET2中我加入您给我的公式,是可以实现隐藏的。
我想在SHEET1中的C3和D3将数据修改为不为0时,SHEET2的数据还是隐藏的,能不能实现地联动,因数据的变化而变化呢?谢谢。

追答

表之间的数据直接关联不就可以了?

追问

表1录入每日的现金和银行的收入和支付的情况。
表2是现金收支情况,
表3是银行收支情况。
只要我在表1录入数据,在表2和表3都实现联动。而且表2和表3是保护的。可以实现这样统计即可,谢谢您。

追答

你的意思是在表1数据录入后自动将表2中指定单元格值不为0的显示出来?
这个宏,在活动工作表中执行都是通用的。

本回答被提问者采纳