我有一个文件夹,里面有多张工作表,每张工作表对应一个日期。我想根据 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
- 此代码可能包含您选择的用于隐藏行的工作表。