1. 程式人生 > 其它 >關於VBA程式碼中的行號

關於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。

哎,沒用的知識又增加了一些;-)