Excel VBA宏在隐藏的工作表上运行

时间:2018-10-04 19:55:03

标签: excel vba excel-vba excel-vba-mac

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

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

这会将Sheet1标记为“截至2018年8月15日”

我的问题是我不希望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

1 个答案:

答案 0 :(得分:1)

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