首頁>科技>

今日的內容是“VBA之EXCEL應用”的第八章“VBA程式碼的除錯及簡單錯誤的排除”。這講是第二節“利用單步執行及斷點設定來除錯程式(Debugging)”。這套教程從簡單的錄製宏開始講解,一直到窗體的搭建,內容豐富,案例眾多。大家可以非常容易的掌握相關的知識,這套教程面向初學人員,共三冊,十七章,都是我們在利用EXCEL工作過程中需要掌握的知識點,希望大家能掌握利用。

第三節 程式碼的錯誤處理(Error Handling)方式之一

大家好,我們今日講解程式碼在遇到錯誤時的錯誤處理方式:On Error Resume Next語句的利用。這講程式碼是什麼意思呢?

1 On Error Resume Next 的理解

On Error Resume Next語句的動作會在程式碼執行錯誤發生時,控制程式碼轉到緊跟在發生錯誤的語句後面的語句, 並繼續執行。

On Error Resume Next導致繼續執行緊跟導致執行時錯誤的語句,或繼續執行緊跟包含 On Error Resume Next 語句的過程外部的最新呼叫的語句。此語句允許繼續執行,而不管執行時錯誤。您可以將錯誤處理過程置於發生錯誤的位置,而不是將控制權轉移到程式中的其他位置。當呼叫其他過程時,On Error Resume Next 語句將變為不活動狀態,因此,如果需要在該例程中進行錯誤處理,則應在每個呼叫的過程中執行 On Error Resume Next 語句。

我們需要注意一點,利用這種處理方式程式在執行過程中要忽略對錯誤的處理,除非我們確信這種錯誤是可以忽略的。2 On Error Resume Next 語句應用場景

我們來看下面的工作表介面:

這個工作表中,在A列有若干不同的值,我們要將B列填入對應同行A列值的平方根。

一般情況下程式碼做如下的寫法:

Sub mynzB() 'On Error Resume Next 語句應用

Dim myRng, myCell As Range

Sheets("Sheet3").Select

Columns("B").Clear

Set myRng = Range("A1:A" & Range("A1").End(xlDown).Row)

For Each myCell In myRng

myCell.Offset(0, 1).Value = Sqr(myCell.Value)

Next

End Sub

程式碼截圖:

程式碼的講解:(略)

透過之前講解的測試技術,我們很容易分析到這個錯誤,如下面的截圖,這是因為求平方根的數在某個地方出現了負值,這是Sqr函式的引數值所不允許的,所以出現了錯誤的提示。

我們透過資料分析得到結論,在A列的資料中,如果出現了負值,可以忽略這個錯誤,不要計算就可以了,這個時候的程式碼該如何寫呢?

3 On Error Resume Next 語句的應用效果

我們看下面的程式碼:

Sub mynzB() 'On Error Resume Next 語句應用

Dim myRng, myCell As Range

Sheets("Sheet3").Select

Columns("B").Clear

Set myRng = Range("A1:A" & Range("A1").End(xlDown).Row)

For Each myCell In myRng

On Error Resume Next

myCell.Offset(0, 1).Value = Sqr(myCell.Value)

Next

End Sub

程式碼截圖:

程式碼的講解:在加入了On Error Resume Next語句後,程式碼將會忽略錯誤的處理,直接執行在這個語句後面的程式碼。

我們看程式碼的執行效果:

此時我們看到第5行和第9行A列出現負值時,在B列沒有數值填入,程式碼是順利執行的。這就是On Error Resume Next語句的作用。再次強調:我們確信這種錯誤是可以忽略的。

今日內容迴向:

1) On Error Resume Next語句作用是什麼?

2) On Error Resume Next語句是如何利用的?

3) 利用On Error Resume Next語句要注意什麼?

本講內容參考程式檔案:工作簿08.xlsm

分享成果,隨喜正能量

VBA的應用及學習方法:

VBA是利用Office實現個人小型辦公自動化的有效手段(工具)。這是我對VBA的應用界定。在取代OFFICE新的辦公軟體沒有到來之前,誰能在資料處理方面做到極致,誰就是王者。其中登峰至極的技能非VBA莫屬!

我記得20年前自己初學VBA時,那時的資料甚少,只能看原始碼自己琢磨,真的很難。20年過去了,為了不讓學習VBA的朋友重複我之前的經歷,我根據自己多年VBA實際利用經驗,推出了七部VBA專門教程。

第一套:VBA程式碼解決方案 是VBA中各個知識點的講解,教程共147講,覆蓋絕大多數的VBA知識點,提供的程式檔案更是一座不可多得的程式碼寶庫,是初學及中級人員必備教程;目前這套教程提供的版本是修訂第二版,程式檔案透過32位和64位兩種OFFICE系統測試。

第二套:VBA資料庫解決方案 資料庫是資料處理的專業利器,教程中詳細介紹了利用ADO連線ACCDB和EXCEL的方法和例項操作,適合中級人員的學習。目前這套教程提供的是修訂第一版教程,程式檔案透過32位和64位兩種OFFICE系統測試。

第三套:VBA陣列與字典解決方案 陣列和字典是VBA的精華,字典是VBA程式碼水平提高的有效手段,值得深入的學習,是初級及中級人員程式碼精進的手段。目前這套教程提供的版本是修訂第一版,程式檔案透過32位和64位兩種OFFICE系統測試。

第四套:VBA程式碼解決方案之影片 是專門面向初學者的影片講解,可以快速入門,更快的掌握這門技能。這套教程是第一套教程(修訂一版)的影片講解,影片更易接受。

第五套:VBA中類的解讀和利用是一部高階教程,講解類的虛無與肉身的度化,類的利用雖然較少,但仔細的學習可以促進自己VBA理論的提高。這套教程的領會主要是讀者的領悟了,領悟一種佛學的哲理。目前這套教程提供的版本是修訂第一版,程式檔案透過32位和64位兩種OFFICE系統測試。

第六套教程:VBA資訊獲取與處理,是一部高階教程,涉及範圍更廣,實用性更強,面向中高階人員。教程共二十個專題,包括:跨應用程式資訊獲得、隨機資訊的利用、電子郵件的傳送、VBA網際網路資料抓取、VBA延時操作,剪下板應用、Split函式擴充套件、工作表資訊與其他應用互動,FSO物件的利用、工作表及資料夾資訊的獲取、圖形資訊的獲取以及定製工作表資訊函式等等內容。程式檔案透過32位和64位兩種OFFICE系統測試。

第七套教程:VBA之EXCEL應用 這是一部初級教程這部教程共三冊,從從建立宏、對話方塊、工作簿和工作表物件、單元格物件等基礎內容講起,到迴圈結構、錯誤處理、字串操作、日期和時間、事件、陣列應用,函式過程等方面,一直講解到控制元件和窗體物件的應用都是我們提高自己EXCEL水平的必須。

以上各教程學習順序:7→1(或者4)→3→2→6→5。其中第四套是對第一套的影片講解,所以第一和第四隻選其一即可。

8
最新評論
  • 整治雙十一購物亂象,國家再次出手!該跟這些套路說再見了
  • 欠122億元是什麼感覺