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

2024年11月20日 22:41
有3个网友回答
网友(1):

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

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

网友(2):

要实现你的要求,代码是很简单的。但你应发个样表或截图来,因为你在sheet1表输入数据,不知是怎样分配在sheet2和sheet3的。

网友(3):

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