【发布时间】:2019-06-13 19:21:20
【问题描述】:
在古代,所有基本语句都被允许有甚至被要求有行号。我今天正在编写一些代码来在所有语句上创建行号。目的是使用错误处理程序中的 erl 函数来帮助调试错误。这是一个示例:
Public Sub AddErrorEventHandlerToForm()
1040 Const sProcedure As String = "AddErrorEventHandlerToForm"
1060 Dim obj As AccessObject, dbs As Object
1080 Dim i As Integer
1100 Dim modOpenModules As Modules
这是修改某些 ms-access 代码的结果。头脑简单的代码为所有语句编号。我不得不从所有声明部分语句中删除数字,因为编译器在编号时将它们标记为错误。 它还在编号时标记过程的第一条语句。 1040 语句没有标记,不会生成错误,也不会将常量 sProcedure 添加到程序的符号表中。所以后面在使用sProcedure的时候会在代码中产生错误。
在搜索 Microsoft Developers Network for Office vba 时,我未能找到有关此主题的文档。我发现的关于行号的最好的是在词汇表中。
似乎需要大量的反复试验。我希望有人完成了这项工作并愿意分享。
【问题讨论】:
-
进一步检查表明还有其他因素在起作用。我用原始的副本替换了更改的代码。它编译正常。我在相关行中添加了语句编号,它仍然可以编译。我会继续调查。
-
Erl已损坏且未记录。仅当您有庞大的程序做太多事情并且有太多失败的原因时,才“需要”行编号。你自己说的,“在古代”是一回事。我们在 2019 年,不要像 1985 年那样编写代码。如果 VBA 是您的生计,并且您确实需要行号来记录日志,那么您需要 vbWatchDog - 那么您将得到实际 文件行号(而不是任意编号的标签)、对调用堆栈的编程访问以及 try/catch 错误处理。
标签: vba