VBA về lỗi GoTo - Các loại báo cáo về lỗi trong VBA

Excel VBA trên lỗi GoTo

Lỗi là một phần của bất kỳ ngôn ngữ mã hóa nào và macro VBA cũng không khác gì lỗi này. Theo tôi, việc tìm ra lý do tại sao lỗi xảy ra là 90% công việc đã hoàn thành, và 10% nằm ở cách sửa lỗi đó. Trong mọi ngôn ngữ mã hóa, người viết mã sử dụng cách riêng của họ để xử lý các lỗi trong mã hóa của họ, chúng ta cũng sử dụng trong mã hóa VBA. Thông thường, chúng ta cần bỏ qua lỗi, hoặc đôi khi chúng ta có thể muốn đi đến những điều cụ thể khi lỗi xảy ra. “On Error” là câu lệnh chúng ta cần sử dụng trong VBA để xử lý lỗi.

Câu lệnh này có ba loại câu lệnh và dưới đây là danh sách.

  1. On Error Goto 0
  2. On Error Goto (nhãn)
  3. Lỗi Tiếp tục Tiếp tục Tiếp theo

Trong bài viết này, chúng ta sẽ thấy cách ba câu lệnh này được sử dụng trong mã hóa VBA để xử lý bất kỳ loại lỗi nào.

Làm thế nào để sử dụng VBA Khi Báo cáo Lỗi?

# 1 - Khi xảy ra lỗi Tiếp tục lại tiếp theo

Như bản thân tuyên bố đã nói, “Khi Lỗi Tiếp tục Tiếp theo” có nghĩa là bất cứ khi nào lỗi xảy ra trong mã “tiếp tục” dòng tiếp theo của mã bằng cách bỏ qua mã dòng lỗi. Bây giờ hãy xem đoạn mã dưới đây.

Trong đoạn mã dưới đây, tôi đã đề cập đến tên trang tính và yêu cầu nhập giá trị vào ô đầu tiên là “Kiểm tra lỗi”.

Mã:

Sub On_Error_Resume_Next () Worksheets ("Ws 1"). Chọn Range ("A1"). Value = "Error Testing" Worksheets ("Ws 2"). Chọn Range ("A1"). Value = "Error Testing" Worksheets ( "Ws 3"). Chọn Range ("A1"). Value = "Error Testing" Worksheets ("Ws 4"). Chọn Range ("A1"). Value = "Error Testing" End Sub

Bây giờ tôi có các trang tính dưới đây trong sổ làm việc của mình.

  • Tôi sẽ chạy mã và xem điều gì sẽ xảy ra.
  • Chúng tôi gặp lỗi "Chỉ số nằm ngoài phạm vi", hãy nhấp vào "Gỡ lỗi" để xem chúng tôi gặp lỗi ở dòng nào.
  • Vì vậy, trong dòng “Trang tính (“ Ws 3 ”). Chọn,” chúng tôi gặp lỗi. Điều này là do, trong sổ làm việc của chúng tôi, không có trang tính nào có tên “Ws 3”, nên đã gặp lỗi.

Trong những trường hợp như vậy, chúng tôi có thể muốn bỏ qua lỗi và tiếp tục thực thi mã cho dòng tiếp theo. Đây là nơi mà trình xử lý lỗi "Khi xảy ra lỗi tiếp tục tiếp theo" của chúng tôi xuất hiện trong hình.

  • Tất cả những gì chúng ta cần làm là thêm dòng “On Error Resume Next” ở đầu macro.

Bây giờ hãy thực thi mã này và nó sẽ không hiển thị bất kỳ thông báo lỗi nào bởi vì bất cứ khi nào mã gặp lỗi, nó sẽ bỏ qua lỗi và tiếp tục với dòng mã tiếp theo.

# 2 - Lỗi GoTo 0

Đây không phải là một trình xử lý lỗi mà là một trình kích hoạt thông báo lỗi sau khi chúng tôi vô hiệu hóa thông báo lỗi bằng cách sử dụng câu lệnh “On Error Resume Next”.

Một khi bạn sử dụng câu lệnh “Tiếp tục tiếp theo”, các macro VBA bắt đầu bỏ qua bất kỳ loại lỗi nào mà nó xảy ra và tiếp tục với dòng mã tiếp theo. Nhưng chúng tôi không muốn điều này xảy ra mọi lúc vì một số lỗi chúng tôi cần cố ý bỏ qua khác mà chúng tôi cần thông báo.

Nếu bất kỳ bộ mã cụ thể nào tạo ra lỗi trong khối mã đó, chúng ta chỉ cần bỏ qua lỗi trong các phần khác của mã. Chúng tôi không muốn bỏ qua lỗi.

  • Nhìn vào hình ảnh bên dưới để biết cách sử dụng câu lệnh “On Error GoTo 0”.

Vì vậy, bây giờ các lỗi sẽ được bỏ qua cho đến khi mã tìm thấy lỗi thông báo cho ban hành “On Error GoTo 0” sau khi dòng mã này thực thi các macro trở lại bình thường và bắt đầu đưa ra các thông báo lỗi như bình thường.

# 3 - Trên nhãn GoTo bị lỗi

Chúng tôi đã thấy cách bỏ qua lỗi và cách bật lại thông báo lỗi. Bây giờ sử dụng phương pháp này, chúng ta có thể đi đến một dòng mã cụ thể.

Trong phương pháp này, "Nhãn" có nghĩa là chúng ta có thể đặt bất kỳ tên nào cho nhãn này và nhãn tương tự cũng phải được đặt ở dòng mã bắt buộc.

Ví dụ, hãy xem cùng một đoạn mã từ ví dụ trên.

Bây giờ chúng ta hãy thực thi từng dòng mã bằng cách nhấn phím chức năng F8.

Bây giờ macro sẽ đọc câu lệnh xử lý lỗi; nhấn phím F8 để thực thi 2 mã trang tính đầu tiên.

Bây giờ macro sắp thực thi mã trang tính thứ ba, mã này không có trong sổ làm việc, hãy nhấn phím F8 và xem điều gì sẽ xảy ra.

Vì macro gặp lỗi trong dòng mã bên dưới, nó đã chuyển đến nhãn trình xử lý lỗi “ErrorMessage” , được mô tả thông qua câu lệnh “On Error GoTo (Label)”.

Bây giờ hộp thông báo sẽ hiển thị thông báo là “Đã xảy ra lỗi và thoát khỏi Macro.”

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

  • Vba On Error GoTo 0 sẽ kích hoạt lại thông báo lỗi, vì vậy đừng quên thêm thông báo này sau khi cung cấp trình xử lý lỗi.
  • Bạn cần phải hoàn toàn chắc chắn về phần mã nào bạn muốn bỏ qua lỗi, vì vậy chỉ gửi kèm trình xử lý lỗi cho khối mã đó.

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