【发布时间】:2020-08-23 19:54:57
【问题描述】:
我正在使用 VBA 代码根据单元格值隐藏一些行:
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Activate
If Not Application.Intersect(Range("K3"), Range(Target.Address)) Is Nothing Then
Select Case Target.Value
Case Is = "Full_FC_powered": Rows("33:33").EntireRow.Hidden = True
Rows("37:38").EntireRow.Hidden = True
Rows("45:46").EntireRow.Hidden = True
Case Is = "FC_for_hotel": Rows("33:33").EntireRow.Hidden = False
Rows("37:38").EntireRow.Hidden = False
Rows("45:46").EntireRow.Hidden = False
Case Is = "DG_for_transit": Rows("33:33").EntireRow.Hidden = False
Rows("37:38").EntireRow.Hidden = False
Rows("45:46").EntireRow.Hidden = False
End Select
End If
End Sub
代码本身已经可以运行,但有一个缺点: “K3”的值链接到另一个计算它的工作表。但是,如果另一个工作表中 K3 的值发生变化,则 VBA 代码不会自动工作。我首先必须转到单元格 K3 并按 Enter。
我的问题:有没有办法将此代码直接链接到另一个工作表或在单元格值更改时刷新此代码?
提前致谢
【问题讨论】:
-
将
Worksheet_Change更改为Worksheet_Calculate并在您的工作簿上自动计算。 -
感谢您的快速回复,如何“在我的工作簿上自动计算”?如果我只是将 Worksheet_Change(ByVal Target As Range) 更改为 Worksheet_Calculate() 我会收到“运行时 424 错误:需要对象”
-
您可以像这样在中间窗口(VBA 编辑器中的 ctrl+G)上进行设置:
Application.Calculation = xlAutomatic。至于代码,忽略有关目标的所有内容,因此忽略条件并将Select Case Target.Value更改为Select Case Range("K3").Value这将在每次工作表计算时触发该过程。我建议在开始时禁用屏幕更新并在最后重新打开它。 -
从VBE可以看出
Calculate事件没有任何参数。
标签: excel vba refresh hide rows