關於VBA程式碼中的行號
阿新 • • 發佈:2021-12-13
最近看到一個很複雜的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。
哎,沒用的知識又增加了一些;-)