Vba 如何抑制任何数据透视表更新的Excel消息?

Vba 如何抑制任何数据透视表更新的Excel消息?,vba,excel,Vba,Excel,我创建了一个数据透视表来总结一些信息,并在数据透视表旁边添加了一些公式来计算数据透视表中包含的数字。我创建了一个宏,每当用户在数据透视表更新事件中通过显示或隐藏各种数据行/列来更改数据透视表的大小时,该宏都会重新输入公式 我的问题是,每当数据列添加到透视表时,它都会询问我是否要替换目标单元格的内容?我总是单击“是”,因为尽管在数据透视表展开时单元格将被覆盖,但公式将重新输入到正确的单元格中,并且宏将修复所有内容并正确设置格式 因此,我想知道我应该将application.displayalert

我创建了一个数据透视表来总结一些信息,并在数据透视表旁边添加了一些公式来计算数据透视表中包含的数字。我创建了一个宏,每当用户在数据透视表更新事件中通过显示或隐藏各种数据行/列来更改数据透视表的大小时,该宏都会重新输入公式

我的问题是,每当数据列添加到透视表时,它都会询问我是否要替换目标单元格的内容?我总是单击“是”,因为尽管在数据透视表展开时单元格将被覆盖,但公式将重新输入到正确的单元格中,并且宏将修复所有内容并正确设置格式


因此,我想知道我应该将application.displayalerts=false放在哪里,以便在用户展开透视表时有效地抑制消息框。

您好,我想这就是您想要的

Sub UpdateIt() 
    Dim iP As Integer 
    Application.DisplayAlerts = False 
    For iP = 1 To ActiveSheet.PivotTables.Count 
        ActiveSheet.PivotTables(iP).RefreshTable 
    Next 
    Application.DisplayAlerts = True 
End Sub 

FWIW这个解决方案对我来说非常有效。我只是单独激活每个工作表,并在执行任何其他操作之前调用UpdateIt函数,例如

Worksheets("RFS Monthly Summary").Activate
UpdateIt
Worksheets("RFS Daily Activity").Activate
UpdateIt

我认为你不能用这种方式抑制警报。如果在代码中调用PT更新,情况就不同了。事实上,在调用PivotTableUpdate时,已经太晚了。您可以尝试的一个解决方法是修改宏,将公式放在安全的地方,在右侧的许多列中,并隐藏PT和公式之间的空白。我希望能够找到一个单独的事件来附加代码,这将在消息显示之前发生。但是,我尝试过使用PivotTableBeforeAllocateChanges、PivotTableBeforeCommitChanges和PivotTableBeforeDiscardChanges事件,但没有成功。我认为在消息显示之前,可能不会发生其他事件。如果是这样,我想我将不得不使用你建议的解决方法。你能提供更多信息吗?它去哪里了?它有什么作用?我试图在用户添加列时更改数据透视表之前捕获事件。这似乎只是一个宏,用于刷新工作簿中的数据透视表,同时抑制我试图抑制的错误。我不确定这有什么帮助,因为用户仍然会向数据透视表添加列,并且消息不会被抑制。因此,如果你能澄清这是在做什么,以及它是如何完成我希望它做的,我将非常感激。