常見的3個Excel VBA程序錯誤

職場中使用Excel VBA編程處理表格數據時,我們肯定會遇到過錯誤。《神奇的VBA》學習插件中介紹過VBA錯誤有語法錯誤,有運行時錯誤等等。語法錯誤在編程階段編輯器會告知我們,這很方便,但是運行時錯誤有時候就有點麻煩了。程序運行時錯誤是所有寫程序人的天敵!一個小小的錯誤有時候能讓人變得非常暴躁。尤其是學習Excel VBA的新人,程序的錯誤更會消耗一個人的耐心和興趣。下面介紹3個常見的錯誤。這些錯誤不僅職場Excel編程的新人會碰到,而且經常使用Excel VBA編程的職場老臘肉們其實也經常會掉坑裡。

常見的3個Excel VBA程序錯誤

1. 變量名錯誤

錯誤信息: 運行後沒有返回正確的結果。為什麼我的運行結果為空?

<code>Sub 創建變量並賦值()
Dim str1 As String
shr1 = "I Love 神奇的VBA"
MsgBox str1
End Sub/<code>
常見的3個Excel VBA程序錯誤

錯誤原因: 這個錯誤,太多人會碰到了,這是個典型的超低級錯誤!上面代碼示例中str1和sh1根本就不是同一個變量。雖然顯式定義了一個字符串String類型的變量,但是賦值變量時,卻寫錯了變量。由於編輯器默認不用強制編程聲明,所有sh1在編程時並沒有提示錯誤。運行時也不會產生錯誤,sh1相當於隱式地創建了一個變量。


2. 數組定義理解不清

錯誤信息: 運行後,循環遍歷數組時,為什麼會多彈出一個0.

<code>Sub 數組賦值並遍歷()
'創建一維數組
Dim num(3) As Integer
'對元素數組進行賦值
Dim x As Long
For x = 0 To 2
num(x) = Cells(x + 1, "A") '假設A1~A12單元格都有數據
Next
'通過循環遍歷逐一彈窗顯示數組的元素值
Dim ele As Variant
For Each ele In num
MsgBox ele
Next
End Sub/<code>
常見的3個Excel VBA程序錯誤

錯誤原因:在沒有Option Base 1語句的前提下, num(12)等同於num(0 To 12) 總共有13個元素,而不是12個元素。


3. For Each遍歷數組元素產生錯誤!

錯誤信息: 循環遍歷數組獲取數組元素值時,運行中產生錯誤提示“下標越界”。

<code>Sub 數組賦值並遍歷()
'創建一維數組
Dim num(0 To 2) As Integer
'對元素數組進行賦值
Dim x As Long
For x = 0 To 2
num(x) = Cells(x + 1, "A") '假設A1~A12單元格都有數據,分別為1~12
Next
'通過循環遍歷逐一彈窗顯示數組的元素值
Dim ele As Variant
For Each ele In num
MsgBox num(ele) '產生“下標越界”的運行時錯誤!
Next
End Sub/<code>
常見的3個Excel VBA程序錯誤

錯誤原因: 應該將num(ele) 改成 ele。For..Each遍歷直接遍歷元素。而num(ele)這樣寫會重新以ele值作為索引獲取數組值!如果ele不是數值的如字符串的話會立即產生錯誤!

暫時就介紹這麼多,更多知識下次再分享。

關注我,學習職場中的乾貨技能!


分享到:


相關文章: