Excel有“On Alert”的VBA吗?就像“On Error”一样?

我已经发现,popup一个关于pivottable的框实际上是一个“alert”框,而不是“error”框。 Excel是否有任何一种“On Alert GoTo:”就像“On Error GoTo:”一样?

我可以完全禁用警报,但是当用户input在数据透视表中找不到的错误名称时,我无法警告用户。 这也重新分配的东西,我不希望这一点!

通过数据validation防止警报

确保用户从预定义列表提供名称的一种方法是使用Excel的内置数据validation 。 您可以让单元格提供基于dynamic范围的自己的select下拉列表。 您可以从Excel的数据选项卡和/或使用VBA进行设置 。 引用是“dynamic的”,因为如果参考范围改变,下拉列表将随之改变,并且如果参考范围是表的列,则列表将根据该列而增长和缩小。

如果validation失败,则可以自定义操作,包括input消息和错误消息。 使用VBA时的一个选项是禁用任何操作,而是使用validation的Value属性来确定运行时的操作。 validation是在单元格值更改之前触发的,所以我的猜测是它会继续提醒您的看法。


错误与警报(我们可以用一个事件吗?)
关于是否有警报消息的On Error等效的更一般的问题,我不认为有这个问题。 VBA没有恒星error handling开始。 On Error处理消息框显示之前的运行时错误,而不是显示事件,并且我不认为有消息框显示引起的任何VBA易于访问的事件。

错误与警报(我们可以使用一个对象吗?)
这听起来像你发现Application.DisplayAlerts = False ,我认为这就像你可以做警报一样。 正如OP提到的那样,这将是很好的转变警报,但仍然编程检查。 你可以通过使用Err对象来做到这一点,但我不认为如果没有警报对象,你可以用警报来做到这一点。