Hướng dẫn cách bẫy lỗi khi viết code trong VBA

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 khi viết code 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:

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

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

VBA giúp ích rất nhiều trong công việc: Tự động hóa Excel, viết hàm tự tạo, giúp làm việc trong Excel dễ dàng hơn, chuyên nghiệp hơn, bổ sung thêm những điều mà Excel không có sẵn. Để tìm hiểu thêm nhiều kiến thức về VBA, mời bạn tham dự khóa học VBA101 – Tự động hóa Excel với lập trình VBA. Đây là khóa học rất hữu ích dành cho bạn. Hãy cùng khám phá nào