在Excel VBA中,将Debug.Print
指令留在“生产”中的代码中是不错的做法?当出现问题时,在用户的机器上实时调试工作表非常有用。 Visual Studio关闭时是否会影响性能?如果没有,你会建议什么?
答案 0 :(得分:24)
Debug.Print指令DO的性能成本很低。所以我会在执行了数万次的循环中避免它们。除了这些情况,我认为保留它们是可以的
您还可以将条件编译指令(#if
)与编译器常量(#const
)结合使用,以在不影响性能的情况下全局启用/禁用它们。
#CONST developMode = True
sub Xyz
#If developMode Then
Debug.Print "something"
#End If
End Sub
答案 1 :(得分:4)
我通常有两个版本; prod没有调试,prod与调试。这与catchall错误处理程序日志记录相结合意味着,如果用户遇到问题,我可以将调试版本部署到他们,他们可以运行它。
我运行的宏用于注释debug.print语句,因此它不是真正的维护开销。
一直运行调试版本的问题(并且,使用Excel VBA通常不是性能问题)是您的应用程序不断发出它不需要的信息。例如,在具有受控电子表格的环境中,这可能被视为一件坏事。
就全局错误处理而言,对于要进行错误处理的每个函数,仍然需要On Error GoTo语句。但是,您可以将这些函数传递给一个公共函数:
Public Function HandleTheNastyErrors(E As ErrObject, ByVal writeLog As Boolean = True)
Select Case E.Number
Case xxx
...specific error handling...
Case Else
... Display a message to the user about how you dont know what happened....
End Select
If writeLog Then
...Log Writing Code...
End If
End Function
然后,OnError:
ErrorHandler:
Call HandleTheNastyErrors(Err, True)
显示诀窍