关于VBA代码中的行号

最近看到一个很复杂的excel,其中包括了大量的VBA程序,其中有个写法让我很抓狂

Sub TestMacro()
'
' TestMacro Macro
'
On Error GoTo Error_In_Command
'
3     Dim a As Integer

4     a = 10
6     a = a / 0
10    Range("D3").Select
20    ActiveCell.FormulaR1C1 = "Hello VBA"
30    Range("D4").Select
Exit Sub
Error_In_Command:
MsgBox ("Error in line: " & CStr(Erl))
End Sub

就是代码前的数字,看着像行号,但是是可以编辑的,像是人写上去的,感觉会出错,但是程序运行的很好,到底啥情况呢?

在网上找了半天,才找到一篇文章

https://www.brainbell.com/tutors/Visual_Basic/Tip_2_Use_line_numbers_in_your_source_code.htm

原来这个功能是Basic语言遗留下来的,就是行号,需要手工编辑,现在不强制写,但是还是有点儿用处的:在出错时,比如上面的栗子:

我故意写了个除0错误,并且手工把行号写成6

6     a = a / 0

在错误处理的部分,Erl这个系统变量就会得到6,于是就可以报出出错的行是6。如果把6改成7,Erl就是7,如果没定义行号Erl就是0。

哎,没用的知识又增加了一些;-)

 

posted @ 2021-12-13 14:36  脱缰的野猪  阅读(693)  评论(0编辑  收藏  举报