VBA是否可以检测到错误并提示数据不可用,而不是给出错误消息?

VBA是否可以检测到错误并提示数据不可用,而不是给出错误消息?,vba,excel,Vba,Excel,我已经创建了一个GUI来设置透视表 例如,我单击按钮1它将运行并设置透视表 当我单击按钮3时,它将出现运行时错误1004,因为它在数据中没有值。那么,是否可以让VBA接受该错误并显示该数据不可用的提示 顺便说一下,我正在用这个 ActiveSheet.PivotTables(“数据透视表1”).PivotFields(“测试”).CurrentPage=“Data1” 设置数据透视表 有3个不同的变量Data1,Data2,Data3。如果数据3不可用,它将显示错误,但我希望有一个提示来显示它

我已经创建了一个GUI来设置透视表

例如,我单击
按钮1
它将运行并设置透视表

当我单击
按钮3
时,它将出现
运行时错误1004
,因为它在数据中没有值。那么,是否可以让VBA接受该错误并显示该数据不可用的提示

顺便说一下,我正在用这个

ActiveSheet.PivotTables(“数据透视表1”).PivotFields(“测试”).CurrentPage=“Data1”

设置数据透视表


有3个不同的变量Data1Data2Data3。如果数据3不可用,它将显示错误,但我希望有一个提示来显示它不可用。。如果你知道怎么做,请与我分享!谢谢大家!

是的。为此,您需要进行适当的错误处理。请参阅此示例代码

Sub Sample()
    On Error GoTo Whoa

    '<Your REST OF THE CODE>

LetsContinue:
    Exit Sub
Whoa:
    '~~> This gives the exact desription and the error number of the error
    MsgBox "Description     : " & Err.Description & vbNewLine & _
           "Error Number    : " & Err.Number

    '~~> This part resumes the code without breaking it :)
    Resume LetsContinue
End Sub
子样本()
关于错误转到哇
'
让我们继续:
出口接头
哇
“~~>这给出了错误的确切描述和错误号
MsgBox“说明:”&错误说明&vbNewLine&_
错误号:&错误号
“~~>此部分在不破坏代码的情况下恢复代码:)
继续
端接头
我会这样做:

On Error Resume Next ' Don't stop execution when an error occurs.
ActiveSheet.PivotTables("PivotTable1").PivotFields("Test").CurrentPage = "Data1"

If Err.Number <> 0 Then ' Can also check for a specific error number instead
    'Oops! An error occured.
    MsgBox "Data isn't available."
    Err.Clear
End If

On Error GoTo 0 ' Go back to stoping execution when an error occurs.
On Error Resume Next“发生错误时不要停止执行。
ActiveSheet.PivotTables(“数据透视表1”).PivotFields(“测试”).CurrentPage=“Data1”
如果错误号为0,则“用户”也可以检查特定的错误号
“哎呀!发生了一个错误。
MsgBox“数据不可用。”
呃,明白了
如果结束
错误转到0'时,返回到发生错误时停止执行。

@JFC:我不建议这样做,因为错误可能是由任何原因造成的。例如,如果没有数据透视表“数据透视表1”或数据透视字段“测试”,该怎么办。对于这些错误,它将显示错误的“数据不可用”错误,而不是显示适当的错误表。我告诉你欧恩是个魔鬼!当然可以,但正如我明确写的,OP可以检查特定的错误号(和/或描述),而不仅仅是
err0
。OP只要求提供一个显示“数据不可用”的消息框。我凭什么说下一步必须退出子系统?也许他想继续执行另一个分支,我不知道。。。。这意味着
ActiveSheet.PivotTables…
语句中没有发生错误。问题到底是什么?嗨,sid,我想知道在检测到错误后是否有代码继续。换句话说,即使在检测到错误后,我也希望继续运行它。有可能吗?有可能,但不可取。如果以下代码依赖于该特定行,该怎么办?如果该行失败,则会出现一系列错误。。因为我有一些代码没有链接到那个错误,需要运行。。我在想也许我可以做同样的事情,但使用另一个子…你能在你原来的帖子中显示代码吗?也许我可以建议一个替代方案。它有点冗长。。我仍在尽力调查这个问题。。如果我仍然卡住了,我会把它贴出来,希望你能看到它!:)