gpt4 book ai didi

excel - 如何在数据透视更新事件中抑制 "overwrite existing data"警报?

转载 作者:行者123 更新时间:2023-12-01 04:43:49 25 4
gpt4 key购买 nike

情况:

我正在使用 PivotTableUpdate清除 PivotTable 右侧范围的事件然后在 PivotTable.DataBodyRange 右侧的下一个可用列中插入值.

单片机项目选择:

在下面的第一张图片中,我选择了一个切片器项目,然后使用

.Offset(, .Columns.Count).Resize(.Rows.Count, 25)

清除 DataBodyRange 右侧的区域. Resize是考虑先前的选择,这些选择可能已经填充了与当前下一个可用的列不同的列。

然后我正在使用
.Offset(, .Columns.Count).Resize(.Rows.Count, 1) = "1"

将下一个可用的空闲列的值设置为,在这种情况下, 1 .

示例:Sheet1 中的一个切片器项目选择、表格和数据透视:



所以我要从“之前”到“之后”,如下所示:

Before and after

这工作正常。下一个可用列地址没有变化。

多项目切片器选择:

当我尝试使用多选进行相同操作时,代码会以标准“覆盖单元格之前的警报”暂停,即我得到:

There is already data in..Do you want to replace it?



示例:Sheet1 中的多切片器项目选择、表格和数据透视:



我试过的:
Application.DisplayAlerts = False


Application.AlertBeforeOverwriting = False

和(清除弹出窗口)
Application.SendKeys "{ENTER}"

该消息仍然显示为多选并且直到我手动按下 OK 才会消失

感想:

我曾以为可能在事件代码运行之前触发了该消息,但是当我覆盖相同的范围(即单个切片器项目选择)时我没有收到此消息

我知道您可以通过"file">“选项”>“高级设置”手动关闭此警报,但不确定如何通过代码在我当前的代码中禁止显示。

任何人都有关于如何抑制此警报的解决方案?

代码:
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)

Application.DisplayAlerts = False

With Target.DataBodyRange

Dim clearRange As Range

Set clearRange = .Offset(, .Columns.Count).Resize(.Rows.Count, 25)

clearRange.ClearContents

.Offset(, .Columns.Count).Resize(.Rows.Count, 1) = "1"

End With

Application.DisplayAlerts = True

End Sub

测试数据:
| Trust | STP  | Val |
|-------|------|-----|
| A | STPa | 1 |
| B | STPb | 2 |
| C | STPc | 3 |

引用:
  • Suppress Overwrite Existing Data Alert In VBA Macro
  • Prevent Overwrite Warning in VBA
  • 最佳答案

    如前所述,当事件触发时为时已晚。

    我的破解方法是创建一个公共(public)变量来保存 pvt.ColumnRange.Columns.Count ,其中 pvt 是一个隐藏的重复数据透视表(有问题的数据透视表),它在列中包含所有可能的选择项。然后对此加 1 以设置添加数据的起始区域,即不会发生重叠。这是在 Init 过程中设置的,因此在触发事件之前可用。

    关于excel - 如何在数据透视更新事件中抑制 "overwrite existing data"警报?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48626224/

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