VBA程序報錯,用調試三法寶,bug不存在的

如果把VBA比作一門刀法,那麼經過前面內容的操練,大家已經掌握了很多實用的招式。

如果我們在刀法招式的基礎之上,再掌握更多的“磨刀”心法,那麼我們的刀用起來纔會又好又快。

所以今天主要和大家分享——VBA“磨刀”心法之程序調試,這也是《Excel VBA:辦公自動化》系列教程的第7節。

1.認識VBA:什麼是VBA?

2.這些掌握了,你纔敢說自己懂VBA

3.VBA變量5年踩坑吐血精華總結

4.VBA中重要的強制申明,誰看誰明白

5.VBA掌握循環結構,包你效率提高500倍

6.精通VBA分支結構,少寫程序100行

1.什麼是程序調試?

所謂的程序調試就是:在某個計算機程序正式投入使用之前,利用一些工具或方法找出程序的漏洞或錯誤,從而保證該程序能夠正常運行不出錯。

這樣說,好像仍然不是很明白。我們舉個例子,幫助大家更好消化。

案例:根據左側「C列」富豪榜的身價數據,利用右側「G列」的判斷標準,將判斷後的「富豪尊稱」填入「D列」

在正式分享上述案例之前,先插播一條關於美化宏按鈕的信息。

有朋友私信問我:猴子,我的那個「宏按鈕」實在是太醜了,我看你設置的就挺好看,應該如何設置呢?

我覺得這位同學很有眼光,既然你已經發現了我的審美,那麼也不隱藏了,都分享給你們了。

通常情況下,我們都是按照「開發工具」-「插入」-「表單控件」-「按鈕(窗體控件)」這樣的路徑來繪製我們的「宏按鈕」

這樣繪製的「宏按鈕」,簡直是巨醜無比,哪能入我猴子的法眼?

一對比上圖,很明顯左側的宏按鈕顏值更高。

就像同樣多金的2個男人,要是我,肯定選擇更帥的那個,不是嗎?

那麼,左側顏值更高的宏按鈕如何設置呢?

經過我多年不眠不休的潛心研究,終於,研製出提升宏按鈕顏值的方案:

首先,我們點選Excel選項卡中的「插入」-「形狀」-「矩形」-「圓角矩形」

然後,直接拖動繪製就好,繪製完成後,Excel會自動多一個「格式」的選項卡。這個選項卡有很多可以自定義這個圓角矩形的操作,比如:顏色、陰影、大小等,大家根據自己的喜好修改就行。

大家可能還有個疑問,宏按鈕確實好看了,可是怎麼讓它關聯宏呢?

納尼?這能難倒我萬能的猴子,又經過數十年的研究,天台式微笑又一次上揚在我的嘴角:

其實,和插入VBA那個巨醜無比的「按鈕(窗體控件)」關聯宏的操作一樣。

我們「鼠標右擊」-「指定宏」,然後從「指定宏」列表選擇自己需要關聯的宏即可。

「宏美化」探討完畢,我們繼續回到上面的案例。

2.VBA程序如何調試?

我們根據上述案例的特點,並結合之前For循環結構IF分支結構的2個知識點,首先將這個案例的代碼寫完(大家肯定都會寫,我就直接展示了)。

運行程序,看下結果

這什麼鬼,VBA你這又來侮辱我的智商嗎?

不過,俗話說:調試用的好,快樂沒煩惱。

因此,我們要用VBA的調試功能,解除VBA侮辱我們智商的煩惱。

(1)我們首次先打開VBA編輯器

(2)鼠標點選「斷點」位置

比如,我們在「For i = 3 To 12」處設置「斷點」,那麼我只需要將鼠標挪至每行代碼前的「灰色框體」上,然後輕輕點擊「鼠標左鍵」,該位置會出現一個

,並且該句代碼會被批色

,表明「斷點」設置成功。

所謂「斷點」就是當VBA遇到手動設置的「斷點」,運行中的程序將會自動停止,並「批黃斷點處代碼」,等待下一步執行指令。

套用到這個案例就是,我點擊程序自動運行後,當程序執行到「For i = 3 To 12」這句話時,就會自動停止,且批黃該句代碼,等待我的下一條指令。

(3)「單步調試」查找錯誤出處

此時爲了找到程序程序出錯的位置和原因,我們需要使用「單步調試」,也就是一句句執行,查看每行代碼執行情況,更加精準的排查錯誤。

在VBA編輯器中,依次點選「調試」-「逐語句」,當然最高效的方法是使用快捷鍵「F8」

(4)鼠標懸停變量處,自動顯示當前變量的值

在代碼過程中,我們將鼠標懸停在變量上,VBA編輯器將自動提示當前變量的取值,比如:圖中的鼠標懸停在「變量i」上,下方會自動顯示當前「i = 3」

有些小夥伴,可能說,猴子這個懸停顯示變量值的功能確實很貼心,你講解的這個案例,只有一個變量,懸停很easy。如果我的代碼中有很多個變量,我要查看多個變量的值,那豈不是...想想都頭皮發麻呢。

一聽就知道,心中有這樣疑問的同學,絕對是“懶中王者”,妥妥的未來科技界領頭羊。

所以,接下來,猴子就再給你介紹個“懶人”VBA調試法寶。

(4)「添加監控」讓VBA調試更貼心

我們在VBA選項卡依次點選「調試」-「添加監控」

在彈出的「添加監控」的表達式填寫需要監視的內容即可,然後點擊右側「確定」按鈕,比如:本案例中需要監控「變量i」的值變化,在「表達式」文本框填入「i」,然後點擊「確定」

然後,我們就可以看到在VBA編輯前底部會生成一個名爲「監視窗口」的窗體,上面顯示了監控的相關內容。比如監控的是什麼,當前監控內容的值;監控內容的類型,相關內容大家在實操後,自行探索查看即可

(5)綜合利用上述調試功能,快速查找代碼出錯原因

當我們將上述代碼一行行執行,在「i = 9」發現,根據分類方法「C9 = 934」屬於二級分類,「單元格D9」顯示的應該是「富豪」,而不是現在錯誤的「超級富豪」

然後,我們就聚焦在這行代碼上,檢查問題。果然是將單元格的判斷值條件寫錯了,才導致了這次的翻車事件~

然後,修改代碼後,發現代碼執行結果正常。

3.總結

以上就是,我們利用VBA代碼調試的功能,實現了定位錯誤代碼、找出原因錯誤原因、修改錯誤代碼,最後成功執行獲得正確結果的全部流程。

通過這個案例,介紹了VBA三大調試法寶。

(1)設置斷點

在需要停止的位置手動設置「斷點」,程序運行此處批色顯示且暫停執行,等待下一步指令。

(2)單步調試

單步調試實現程序逐句執行,快速定位錯誤代碼位置,便於及時排查錯誤。

(3)添加監視

實時監控需要關注的變量或內容,精準定位錯誤原因。

同時,還與大家分享了,通過「插入形狀」美化宏按鈕顏值的小技巧,讓你的代碼實用的同時,也增加了爆表的顏值。

畢竟,多金又帥的小哥哥誰不喜歡呢?

推薦:人工智能時代,你必須要學會這個通用技能

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章