VBA về lỗi GoTo | Các loại câu lệnh về lỗi trong VBA
Excel VBA về 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 khắc phục 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ý lỗi trong mã hóa của họ, chúng tôi 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.
- Về lỗi Goto 0
- On Error Goto [nhãn]
- Lỗi Tiếp tục Tiếp tục Tiếp theo
Trong bài viết này, chúng ta sẽ xem 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?
Bạn có thể tải xuống Mẫu báo cáo VBA Khi Lỗi GoTo này tại đây - Mẫu Báo cáo VBA Khi Lỗi GoTo# 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 là “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 “On Error Resume Next” 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 vì bất cứ khi nào mã gặp lỗi, nó sẽ bỏ qua lỗi và tiếp tục đến 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à trình ban hành 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” 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 gây ra lỗi trong khối mã đó, chúng ta chỉ cần bỏ qua lỗi các phần khác của mã mà chúng ta 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”. Khi dòng mã này thực thi 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ã bảng tính đầu tiên.
Bây giờ macro sắp thực thi mã trang tính thứ ba 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 thông báo lỗi một lần nữa, vì vậy đừng quên thêm điều này sau khi cung cấp trình xử lý lỗi.
- Bạn cần hoàn toàn chắc chắn về phần mã nào bạn muốn bỏ qua lỗi, do đó, chỉ gửi kèm trình xử lý lỗi cho khối mã đó.