将“Debug.Print”指令留在“生产”中的代码中是一种好习惯吗?

时间:2011-12-07 08:41:18

标签: excel-vba vba excel

在Excel VBA中,将Debug.Print指令留在“生产”中的代码中是不错的做法?当出现问题时,在用户的机器上实时调试工作表非常有用。 Visual Studio关闭时是否会影响性能?如果没有,你会建议什么?

2 个答案:

答案 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)

显示诀窍