关于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。
哎,没用的知识又增加了一些;-)