Xử lý lỗi VBA - Hướng dẫn xử lý lỗi trong Excel VBA

Xử lý lỗi VBA trong Excel

Trong VBA khi chúng ta làm việc với các đoạn mã chúng ta có thể gặp nhiều loại lỗi khác nhau và cách khắc phục những lỗi này được gọi là Xử lý lỗi, bây giờ có thể có một số lỗi được tạo ra trong cú pháp mà chính excel đánh dấu nó nhưng khi có một số lỗi cái nào nằm ngoài phạm vi hoặc cái gì đó không tồn tại excel cung cấp cho chúng ta một cửa sổ bật lên tương tự, điều quan trọng là phải biết mã lỗi nào dành cho lỗi nào để xác định lỗi trong mã.

Trong Excel VBA, trong khi thực thi bất kỳ bộ mã nào, chúng tôi gặp một số lỗi. Một số lỗi này là lỗi cú pháp; một số là lỗi không thể sửa được. Lỗi cú pháp do người dùng thực hiện được đánh dấu bằng màu đỏ bởi chính excel. Nhưng khi có bất kỳ loại lỗi thời gian chạy nào khác, chúng ta sẽ xử lý nó như thế nào và làm thế nào để vượt qua điều này là những gì chúng ta sẽ đề cập trong bài viết này.

Ngoài lỗi cú pháp, các lỗi thời gian chạy khác cần được xử lý trong khi thực thi bất kỳ bộ mã nào. Trước tiên, hãy để tôi đưa ra một ví dụ về cách xảy ra lỗi thời gian chạy khác. Hãy xem đoạn mã dưới đây,

Đây là đoạn mã mẫu, khi được thực thi, nó sẽ trả về những gì được viết trong hàm msgbox. Nhưng như chúng ta có thể thấy rằng trong dòng thứ hai của mã, có 4/0, điều này là không thể về mặt toán học, vì vậy nó sẽ trả về lỗi thời gian chạy. Hãy để chúng tôi thực thi đoạn mã trên và xem lỗi chúng tôi sẽ gặp phải.

Đây là lỗi chúng tôi gặp phải khi thực thi mã đã cho. Bây giờ chúng ta xử lý lỗi này như thế nào là do Xử lý lỗi.

Có hai phương pháp để xử lý lỗi là:

  1. Trên Lỗi Goto, và
  2. Khi Lỗi Tiếp tục Tiếp tục.

Giải trình

Như đã giải thích ở trên, chúng tôi nhận được nhiều loại lỗi trong VBA. Một số là cú pháp và một số là thời gian chạy. Các lỗi cú pháp đã được đánh dấu bằng màu Đỏ, ví dụ: hãy tham khảo ảnh chụp màn hình bên dưới,

Trong khi cái còn lại là lỗi thời gian chạy. Về cơ bản, excel sẽ thực hiện ba việc sau, hoặc nó sẽ hiển thị một lỗi hoặc bỏ qua lỗi đó, hoặc nó sẽ hiển thị một bộ hướng dẫn nhất định. Để thực hiện các tác vụ như vậy, chúng tôi cần đưa ra các hướng dẫn và điều này được gọi là Xử lý lỗi.

Làm thế nào để xử lý lỗi trong mã VBA?

Ví dụ 1

Đối với ví dụ đầu tiên, chúng ta hãy lấy mã đầu tiên mà chúng ta lấy làm minh chứng. Trong ví dụ trên, chúng ta đã thấy rằng mã cho lỗi thời gian chạy ở hàm msgbox thứ hai.

Viết mã sau sau khi mở chức năng con,

Mã:

Mẫu phụ () Khi có lỗi Tiếp tục lại MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 Kết thúc Sub

Bây giờ khi chúng ta thực thi đoạn mã trên, chúng ta thấy rằng dòng mã có lỗi không được thực thi. Excel bỏ qua dòng đó và tiếp tục trên dòng tiếp theo.

Có một phương pháp khác để xử lý lỗi là VBA Goto Statement. Chúng tôi cung cấp excel như một điểm đến để truy cập khi nó phát hiện ra lỗi. Thay vì mã xử lý lỗi trước đó, chúng tôi đã chèn, hãy ghi lại mã sau,

Mã:

Mẫu phụ () Khi bị lỗi GoTo az MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 End Sub

Chúng tôi đang cung cấp cho excel Az làm điểm đến nếu nó phát hiện ra lỗi. Bây giờ sau hộp thư, hãy viết một mã khác như bên dưới,

Mã:

Mẫu phụ () Khi bị lỗi GoTo az MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 Xong: Thoát phụ

Bây giờ chúng ta cần xác định az đích như những gì nó sẽ làm khi excel tìm thấy lỗi trong mã.

Mã:

Mẫu phụ () Có lỗi GoTo az MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 Xong: Thoát Sub az: MsgBox "Đây là lỗi" & Err.Description End Sub

Bây giờ khi chúng tôi chạy mã này, chúng tôi thấy kết quả được hiển thị.

Đây là kết quả hộp thư đầu tiên và như chúng ta biết rằng chúng ta có lỗi trong dòng tiếp theo của mã của mình, hãy xem kết quả mà excel sẽ cung cấp.

Mô tả lỗi ở trên trong mã giúp chúng tôi hiển thị chính xác lỗi đã xảy ra trong mã của chúng tôi.

Ví dụ số 2

Chúng tôi đã học cách xử lý lỗi trong mã của chúng tôi. Chúng ta hãy xem một ví dụ khác về cách xử lý lỗi. Hãy coi đoạn mã sau là ví dụ thứ hai của chúng tôi.

Chúng ta có một lỗi tương tự từ ví dụ 1. Lỗi ở dòng d = i / b. Bây giờ chúng tôi sẽ xử lý những lỗi này bằng cách sử dụng hai phương pháp được giải thích ở trên.

Viết mã sau sau khi mở chức năng con,

Mã:

Sub Sample2 () On Error Resume Tiếp theo bx Dim i As Integer, b As Integer, c As Integer, d As Integer i = 2 b = 0 c = i + b MsgBox cd = i / b MsgBox d End Sub

Now when we execute our code, we can see that it ignores the second line and just displays the value for C.

The above error handler was a resume next, and now we will use the Go to wherein we will tell we excel a destination to go when it encounters an error. Write down the following code,

Code:

Sub Sample2() On Error GoTo bx Dim i As Integer, b As Integer, c As Integer, d As Integer i = 2 b = 0 c = i + b MsgBox c d = i / b MsgBox d

The bx is a destination given when it encounters an error after msgbox D write down the following code,

Code:

Sub Sample2() On Error GoTo bx Dim i As Integer, b As Integer, c As Integer, d As Integer i = 2 b = 0 c = i + b MsgBox c d = i / b MsgBox d DOne: Exit Sub

Now we need to define the destination Bx what it should do when it encounters an error, So write down the following code,

Code:

Sub Sample2 () On Error GoTo bx Dim i As Integer, b As Integer, c As Integer, d As Integer i = 2 b = 0 c = i + b MsgBox cd = i / b MsgBox d DOne: Exit Sub bx: MsgBox "Đây là một lỗi khác" & Err.Description End Sub

Bây giờ khi chúng ta thực thi mã, chúng ta có thể thấy rằng excel đầu tiên cung cấp cho chúng ta giá trị của C.

Bây giờ trong một bước khác, nó sẽ cung cấp cho chúng tôi lời nhắc mà chúng tôi đã cung cấp khi nó gặp lỗi.

Đây là cách chúng tôi xử lý các lỗi thời gian chạy bình thường trong Excel VBA.

Những điều cần ghi nhớ

Có một số điều chúng ta cần nhớ về Xử lý lỗi:

  1. Tiếp tục Lỗi Tiếp theo, Bỏ qua lỗi.
  2. Về Lỗi GoTo Cung cấp cho excel một điểm đến khi nó gặp lỗi.
  3. Mô tả được sử dụng để hiển thị lỗi chính xác đã xảy ra với người dùng.

thú vị bài viết...