根据多个工作表的单元格隐藏行

根据多个工作表的单元格隐藏行

我有一个文件夹,里面有多张工作表,每张工作表对应一个日期。我想根据 F5 中的单元格信息隐藏行。我设法让此功能在一张工作表上起作用,但不能在多张工作表上起作用。

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("f5").Value = "Flat" Then
     Rows("29:62").EntireRow.Hidden = True
ElseIf Range("F5").Value <> "Flat" Then
    Rows("29:62").EntireRow.Hidden = False

End If
End Sub

答案1

方法 1:

您可以使用此 VBA(宏)代码隐藏29 to 62工作簿中所有可用工作表中的行。

Sub HideRows()

Dim sht As Worksheet
Application.ScreenUpdating = False

For Each sht In Worksheets
    beginRow = 29
    endRow = 62

    For Rowcnt = beginRow To endRow

        If Sheets("sheet1").Range("F5").Value = "Flat" Then

            sht.Rows(Rowcnt).EntireRow.Hidden = True
        Else
            sht.Rows(Rowcnt).EntireRow.Hidden = False
        End If

    Next Rowcnt
Next sht

Application.ScreenUpdating = True

End Sub

笔记,29:62我使用了而不是 Rows ,60:65并且 CriteriaY位于A55你可以改变它们。

在此处输入图片描述


在此处输入图片描述


在此处输入图片描述

怎么运行的:

  • 复制粘贴此代码为标准模块随着工作表1

  • 工作表名称Sheet1 标准单元格引用(F5),值Flat&行维度29:62是可编辑的。


方法 2:

29:62此代码仅可用于隐藏某些工作表中的行。

Private Sub Worksheet_Change(ByVal Target As Range)

    Application.ScreenUpdating = False

    If Intersect(Target, Range("F5:F5")) Is Nothing Then Exit Sub

    If Target.Address = ("$F$5") And Target.Value = "Flat" Then
        Sheets("Sheet1").Rows("29:62").EntireRow.Hidden = True
    ElseIf Target.Address = ("$F$5") And Target.Value <> "Flat" Then
        Sheets("Sheet1").Rows("29:62").EntireRow.Hidden = False
    ElseIf Target.Address = ("$F$5") And Target.Value = "Flat" Then
        Sheets("Sheet2").Rows("29:62").EntireRow.Hidden = Ture
    ElseIf Target.Address = ("$F$5") And Target.Value <> "Flat" Then
        Sheets("Sheet2").Rows("29:62").EntireRow.Hidden = False
    End If

    Application.ScreenUpdating = True

End Sub 
  • 此代码可能包含您选择的用于隐藏行的工作表。

相关内容