gpt4 book ai didi

vba - 仅适用于事件工作表,但我需要它在所有工作表上运行

转载 作者:行者123 更新时间:2023-12-03 03:23:23 25 4
gpt4 key购买 nike

我的 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 包含我的数据。此代码有效,但仅适用于当前工作表。我必须在另一张纸上手动运行代码才能获得我需要的结果。目标是在所有工作表的文件打开后运行代码,现在它只执行它打开的工作表。我希望我解释得很好。如果您对此有疑问,请询问。

最佳答案

我猜该部分仅适用于 ActiveSheetRows.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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com