我发现与数据透视表相关的弹出框实际上是“警报”框,而不是“错误”框。 Excel 是否有任何类型的“On Alert GoTo :” 就像它对“On Error GoTo :”一样?
我可以完全禁用警报,但是当用户输入在数据透视表上找不到的错误名称时,我无法警告用户。这也会重新分配东西,我不希望这样!
最佳答案
通过数据验证防止警报
确保用户从预定义列表中提供名称的一种方法是使用 Excel's built-in data validation .您可以让单元格提供其自己的基于动态范围的选项下拉列表。您可以从 Excel 的数据选项卡和/或通过 using VBA 进行设置。 .引用是“动态的”,因为如果引用范围发生变化,下拉列表会随之变化,如果引用范围是表格的列,那么列表会根据该列增长和缩小。
如果验证失败要采取的操作也可以自定义,包括输入消息和错误消息。使用 VBA 时的一种选择是禁用任何操作,而是使用验证的 Value
属性来确定运行时的操作。在更改单元格值之前触发验证,所以我的猜测是它会继续您看到的警报。
错误与警报(我们可以处理事件吗?)
关于是否存在 On Error
的更一般的问题相当于警报消息,我认为没有。 VBA 一开始就没有出色的错误处理。 On Error
在消息框显示之前处理运行时错误,而不是在显示事件上处理,而且我认为没有任何由消息框显示引起的 VBA 易于访问的事件。
错误与警报(我们可以使用对象吗?)
听起来你找到了Application.DisplayAlerts = False
,我认为这与您可以使用警报一样多。正如 OP 所提到的,打开警报但仍然以编程方式检查它们会很好。您可以使用 Err
来处理错误。对象,但是如果没有警报对象,我认为您不能使用警报来做到这一点。
关于excel - Excel 是否有 "On Alert"的 VBA 和 "On Error"一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34496888/