Taw*_*awm 6 vba try-catch onerror
我正在阅读如何使用On Error Resume Next,我正在试图找出该行将适用于该程序的时间.在Microsoft站点上,我发现这句话:"An On Error Resume Next语句在调用另一个过程时变为非活动状态." 这到底是什么意思?什么被认为是一个程序?
我问,因为我在我的程序中使用了这行,但是我不希望它出现Resume Next所有发生的运行时错误,只是下一行中的明显错误.
代码:Dim zRange As Range
Dim zRange As Range
Call FilterTableFor(fieldNameColumn, Array("baseunitprice", "burden", "MTLBURRATE", "PurPoint", "Vendornum"))
On Error Resume Next
Set zRange = commentsColumnRange.SpecialCells(xlCellTypeVisible)
zRange.Formula = "target"
Call FilterTableFor(fieldNameColumn)
Run Code Online (Sandbox Code Playgroud)
我也发现(并且已知有一段时间)On Error或者GoTo行被认为是编码不好.有没有Try-Catch我可以用于这样的线?
我在想这样的事情:
Dim zRange As Range
Call FilterTableFor(fieldNameColumn, Array("baseunitprice", "burden", "MTLBURRATE", "PurPoint", "Vendornum"))
Try
Set zRange = commentsColumnRange.SpecialCells(xlCellTypeVisible)
zRange.Formula = "target"
Catch()
Call FilterTableFor(fieldNameColumn)
Run Code Online (Sandbox Code Playgroud)
我甚至没有做任何事情,因为我觉得不需要.
谢谢你的时间.
ON ERROR...声明的范围
ON ERROR ...遇到以下任何一种情况时, 结束的效果如下:
ON ERROR ....(也许以ON ERROR RESUME x或的形式ON ERROR GOTO x)Exit Sub/ Exit Function在定义的相同子/函数内.End Sub/ End Function定义的子/函数.难以使用ON ERROR RESUME NEXT吗?
是和否.
我想说如果不知道这个陈述会产生什么影响,就不要使用.尽可能避免.在任何可能的地方尽量缩短范围.
要使ON ERROR RESUME NEXT语句的效果无效,您可以调用ON ERROR GOTO 0
您只想在以下情况下使用“On Error Resume Next”:
你知道为什么会发生错误。
您知道它不会影响代码的其他部分。
您可以在发生错误的代码后立即使用“On Error Goto 0”。
话虽如此,你几乎不应该使用它。您应该弄清楚错误发生的原因以及处理错误的代码。
该网站的意思是,一旦您退出调用它的子程序或函数,接下来的简历将不再有效,并且您的错误将按其应有的方式出现。
更好的选择是以这种方式使用 goto。但有些人对此几乎同样不以为然。
sub SomeSub()
On Error Goto TestFailed
'Some code
'Some code
'Some code
Exit sub
TestFailed:
'Some code here to alert you to and/or handle the fallout of the error.
End sub
Run Code Online (Sandbox Code Playgroud)