直到现在,如果其中一个宏代码中存在错误,它将宣布错误
我想让他知道他必须去找经理
这就是我现在拥有的代码
SELECT Column1, Column2, Column3, Count('x') AS CountX
FROM [SchmaName].[SQLView]
WHERE ("SomeWhereStatement")
GROUP BY Column1, Column2, Column3
HAVING Count('x') > 1;
如何显示文件中所有错误的消息
如果这还不够清楚,请给我写信
答案 0 :(得分:-1)
我建议不要使用On Error GoTo error1
错误陷阱方法。您可以直接捕获预期的错误,而不是通用的“全部捕获” 方法。
使用On Error GoTo error1
会错误捕获整个代码。您甚至都不知道哪一行会引发错误,如果您的代码很长,则会出现问题。
在这里,您将如何正确地将整个代码包装在通用的“全部捕获” 错误陷阱中。您需要在代码后使用Exit Sub
。这样可以确保仅在错误实例上到达您的错误行。
Sub Generic ()
On Error GoTo error1
'Code goes here
Exit Sub
''''''''''''''''''''''''''''''''''''''
error1:
MsgBox "Error, Contact Administrator"
End Sub
更好的方法是预见潜在的错误并编码出错误,或者以更直接的方法处理它们。由于我们不知道您要捕获什么错误,因此我仅举一个例子。以下代码旨在复制Column A
中最后使用的单元格并将其复制到单元格B2
Sub CopyRange()
Dim LRow as Long 'Last Row
LRow = Range("A" & Rows.Count).End(xlUp).Row
Range("A" & LRow).Copy Destination:= Range("B2") '<---- anticipated error line
End Sub
如果没有复制范围LRow = 0
,那么如果A0
,此代码将出现错误。您可以将整个代码包装在通用错误陷阱中,也可以直接处理错误。检查LRow
的值并在其中显示您的消息。现在您将知道错误是什么!
Sub CopyRange()
Dim LRow as Long 'Last Row
LRow = Range("A" & Rows.Count).End(xlUp).Row
'Error Trap Here!
If LRow = 0 Then
MsgBox "LRow Calculation Issue. Notify Admin!"
Exit Sub '<---- code will stop here before the error has a chance to be raised
End If
Range("A" & LRow).Copy Destination:= Range("B2") '<---- anticipated error line
End Sub