首页 > 解决方案 > Excel VBA 宏在隐藏的工作表上运行

问题描述

我有连接到外部数据集的数据透视表。我正在尝试根据枢轴日期范围内的最大日期值动态更新工作表/选项卡名称。我能够让它工作,但如果日期在数据透视表中过滤,它会改变。我将相同的数据/枢轴放在另一个选项卡上,该选项卡仅显示最大日期值并将其显示在单元格“C1”中

=CONCATENATE("AS OF"," 
",TEXT(GETPIVOTDATA("CALL_DATE",MAX_TABLE!A1),"MM.DD.YYYY"))

这将 Sheet1 标记为“AS OF 08.15.2018”

我的问题是我不希望 max_table 选项卡可见,所以我将其隐藏。因此,在我取消隐藏工作表之前,宏不会运行。一旦它被取消隐藏,它就会更新。我试图取消隐藏,运行宏,然后再次隐藏,但它没有按预期工作。在下面,它不是自己运行的,而是在我取消隐藏工作表然后隐藏工作表后运行。

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Application.ScreenUpdating = False
Sheets("MAX_TABLE").Visible = True
Sheets("MAX_TABLE").PivotTables("MAX").PivotCache.Refresh
Set Target = Sheets("MAX_TABLE").Range("C1")
If Target = "" Then Exit Sub
Sheet1.Name = Left(Target, 31)
Sheets("MAX_TABLE").Visible = False
Application.ScreenUpdating = True
Exit Sub
End Sub

标签: excelvbamacos

解决方案


我的问题/问题并不是真正的问题。我选择了错误的子。它已连接到 worksheet_selectionchange,因此它永远不会运行,因为我总是必须单击隐藏的工作表才能触发它。我使用了 sub worksheet_change,它不一定是最好的,但它之所以有效,是因为隐藏的工作表只更新一次,这会导致宏按预期运行。


推荐阅读