我的 VBA 代码有问题,我需要它来隐藏尚未结束或尚未发生的数据数周。我的代码如下所示
Sub Workbook_Open()
Sheets("TOTAL ISSUE DATA").Unprotect "1234"
Sheets("Cradle Pop").Unprotect "1234"
Sheets("Bad Graph").Unprotect "1234"
Sheets("No&Low Flow").Unprotect "1234"
Sheets("Block Curve").Unprotect "1234"
Sheets("No&Low Charge").Unprotect "1234"
Dim cell As Range
Rows.Hidden = False
For Each cell In Worksheets("TOTAL ISSUE DATA").Range("B2:B56")
If cell.Value > Now Then
cell.EntireRow.Hidden = True
End If
Next cell
For Each cell In Worksheets("Cradle Pop").Range("B2:B56")
If cell.Value > Now Then
cell.EntireRow.Hidden = True
End If
Next cell
For Each cell In Worksheets("Bad Graph").Range("B2:B56")
If cell.Value > Now Then
cell.EntireRow.Hidden = True
End If
Next cell
For Each cell In Worksheets("No&Low Flow").Range("B2:B56")
If cell.Value > Now Then
cell.EntireRow.Hidden = True
End If
Next cell
For Each cell In Worksheets("Block Curve").Range("B2:B56")
If cell.Value > Now Then
cell.EntireRow.Hidden = True
End If
Next cell
For Each cell In Worksheets("No&Low Charge").Range("B2:B56")
If cell.Value > Now Then
cell.EntireRow.Hidden = True
End If
Next cell
Sheets("TOTAL ISSUE DATA").Protect "1234"
Sheets("Cradle Pop").Protect "1234"
Sheets("Bad Graph").Protect "1234"
Sheets("No&Low Flow").Protect "1234"
Sheets("Block Curve").Protect "1234"
Sheets("No&Low Charge").Protect "1234"
End Sub
A 列包含周号,B 列包含该周的结束日期,C-Z 包含我的数据。此代码有效,但仅适用于当前工作表。我必须在另一张纸上手动运行代码才能获得我需要的结果。目标是在所有工作表的文件打开后运行代码,现在它只执行它打开的工作表。我希望我解释得很好。如果您对此有疑问,请询问。
最佳答案
我猜该部分仅适用于 ActiveSheet
是 Rows.Hidden = False
,因为其他一切都应该正常工作。
因此,如果您希望它适用于每张纸,请在 Rows.Hidden = False
的位置写下类似的内容:
Sheets("TOTAL ISSUE DATA").Rows.Hidden = False
Sheets("Cradle Pop").Rows.Hidden = False
...etc
正如您所注意到的,如果您不指定 Worksheet()
Row
的,需要 ActiveWorksheet
仅。
您的代码可以轻松升级 - 如果您构建一个单独的过程,它将范围作为输入,然后循环遍历其单元格,如下所示:
Public Sub HideRange(rangeToHide As Range)
Dim myCell As Range
For Each myCell In rangeToHide
If myCell > Now Then
cell.EntireRow.Hidden = True
End If
'The condition can be made a bit fancier like this:
'myCell.EntireRow.Hidden = myCell > Now
Next myCell
End Sub
您可以向它传递值,例如 HideRange Worksheets("Bad Graph").Range("B2:B56")
关于vba - 仅适用于事件工作表,但我需要它在所有工作表上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48770139/