25/05/2018, 23:26

Tìm hiểu về cách bẫy lỗi trong VBA – Phần 1

Khi làm việc trong VBA việc gặp lỗi là không thể tránh khỏi. Do đó chúng ta cần biết về cách bẫy lỗi trong VBA. Một vài cách bẫy lỗi cơ bản thường sử dụng là: Cách 1: On Error Goto <label> Đây là dạng cơ bản thường sử dụng trong VBA. Trong đó đối tượng <label> có thể là: Giá ...

Khi làm việc trong VBA việc gặp lỗi là không thể tránh khỏi. Do đó chúng ta cần biết về cách bẫy lỗi trong VBA.

Một vài cách bẫy lỗi cơ bản thường sử dụng là:

Cách 1: On Error Goto <label>

Đây là dạng cơ bản thường sử dụng trong VBA. Trong đó đối tượng <label> có thể là:

Giá trị số -1

On Error Goto -1

Giá trị số 0

On Error Goto 0

Đi tới một nội dung xử lý lỗi cụ thể

On Error Goto ThongBaoLoi

Chúng ta xét ví dụ sau:

Cho sẵn 2 giá trị tại các ô A1, A2. Sử dụng VBA để thực hiện lấy kết quả phép chia sau:

A3 = A1 / A2

Câu lệnh như sau:

View the code on Gist.

Nếu số bị chia là 0 thì sẽ xuất hiện lỗi. Do đó chúng ta cần biện luận bẫy lỗi này để chương trình hoạt động được bình thường.

Nếu phép chia A1 / A2 ra kết quả bình thường thì sẽ nhận msgbox là ok!

Nếu phép chia này có lỗi thì sẽ kiểm tra xem đó có phải lỗi chia cho 0 hay không (Err.Number = 11 là lỗi chia cho 0)

* Phân biệt câu lệnh On Error Goto -1 và On Error Goto 0

On Error Goto 0 là đưa cơ chế bẫy lỗi về dạng cơ bản của VBA, khi gặp lỗi sẽ có thông báo lỗi bằng msgbox theo cơ chế mặc định. Thường sử dụng khi muốn tắt chức năng bẫy lỗi đã thiết lập trước đó trong cùng 1 câu lệnh

On Error Goto -1 là xóa bỏ cơ chế bẫy lỗi trước đó để thay bằng 1 cơ chế bẫy lỗi khác. Dòng lệnh này thường được gắn liền với một dòng lệnh bẫy lỗi khác.

Cách 2: On Error Resume Next

Khi sử dụng bẫy lỗi này, từ vị trí dòng lệnh bẫy lỗi này trở đi, nếu gặp bất kỳ lỗi nào thì sẽ được chương trình bỏ qua lỗi đó mà không có bất kỳ thông báo nào.

  • Ưu điểm: Sử dụng nhanh, không phải lo chương trình bị dừng lại bởi bất kỳ lỗi nào.
  • Nhược điểm: Chỉ bỏ qua lỗi mà không sửa lỗi, không thông báo lỗi nên sẽ khiến chương trình vẫn tồn tại lỗi, dẫn tới sai sót mà không rõ ở đâu, đặc biệt nên tránh sử dụng khi chưa thuần thục kỹ thuật bẫy lỗi trong VBA.
  • Thường sử dụng: Trong những đoạn Sub ngắn, thực hiện những thao tác đã rõ ràng và không cần quan tâm tới các kết quả sai, lỗi.
  • Có thể kết hợp với lệnh On Error Goto 0 để dừng việc bẫy lỗi bởi On Error Resume Next cho những dòng lệnh tiếp theo, chỉ bỏ qua lỗi trong một số đoạn câu lệnh nhất định
View the code on Gist.

Chúc các bạn học tốt cùng Học Excel Online!

0