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 tôi 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 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 trong số 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 phải 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. Đầu 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 thực thi 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 nên 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ờ làm thế nào để chúng ta xử lý lỗi này được thực hiện bởi 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ỗi là cú pháp và một số lỗi 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 tập hợp các hướng dẫn nhất định. Để thực hiện các tác vụ như vậy, chúng ta 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?

Bạn có thể tải xuống Mẫu Excel Xử lý Lỗi VBA này tại đây - Mẫu Excel Xử lý Lỗi VBA

Ví dụ 1

Đối với ví dụ đầu tiên, chúng ta hãy lấy đoạn 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ã đưa ra lỗi thời gian chạy ở hàm msgbox thứ hai.

Viết đoạn 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 End 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 cho excel một đích để 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, viết ra 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 đích để truy cập 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ụ () Có 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 chúng ta, 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 xét 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 tôi 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 đoạn 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 

Bây giờ khi chúng ta thực thi mã của mình, chúng ta có thể thấy rằng nó bỏ qua dòng thứ hai và chỉ hiển thị giá trị cho C.

Trình xử lý lỗi ở trên là một bản tiếp tục tiếp theo, bây giờ chúng ta sẽ sử dụng Go to, trong đó chúng ta sẽ cho excel biết một điểm đến để đi khi nó gặp lỗi. Viết ra đoạn mã sau,

Mã:

 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

Bx là điểm đến được cung cấp khi nó gặp lỗi sau khi hộp thư D ghi ra mã sau,

Mã:

 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 

Bây giờ chúng ta cần xác định Bx đích nó sẽ làm gì khi gặp lỗi, Vì vậy, hãy viết ra đoạn mã sau,

Mã:

 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 tục 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.

$config[zx-auto] not found$config[zx-overlay] not found