Xử Lý Lỗi Trong VBA: On Error, Err Object Và Debug Chuyên Nghiệp
Chia sẻ
"Hướng dẫn Error Handling trong VBA Excel — On Error GoTo, On Error Resume Next, Err Object, Debug.Print và các kỹ thuật debug macro hiệu quả."
1. Tại Sao Cần Xử Lý Lỗi?
Khi chạy macro VBA, lỗi runtime có thể xảy ra bất cứ lúc nào — file không tồn tại, chia cho 0, sheet bị xoá. Nếu không xử lý, macro sẽ dừng đột ngột và người dùng hoảng hốt. Error handling giúp macro chạy ổn định và thông báo lỗi rõ ràng.
2. On Error Statement
2.1. On Error GoTo [Label]
Sub SafeDivision()
On Error GoTo ErrorHandler
Dim result As Double
result = 100 / 0 ' Lỗi chia cho 0!
MsgBox "Kết quả: " & result
Exit Sub
ErrorHandler:
MsgBox "Lỗi: " & Err.Description, vbCritical, "Có lỗi xảy ra"
End Sub2.2. On Error Resume Next
Sub CheckSheetExists()
Dim ws As Worksheet
On Error Resume Next
Set ws = ThisWorkbook.Sheets("Data")
On Error GoTo 0 ' Tắt Resume Next
If ws Is Nothing Then
MsgBox "Sheet Data không tồn tại!"
Else
MsgBox "Sheet Data đã tìm thấy."
End If
End Sub3. Err Object — Chi Tiết Lỗi
Sub DetailedErrorInfo()
On Error GoTo ErrHandler
' Code có thể gây lỗi
Open "C:\file_khong_ton_tai.txt" For Input As #1
Exit Sub
ErrHandler:
MsgBox "Mã lỗi: " & Err.Number & vbNewLine & _
"Mô tả: " & Err.Description & vbNewLine & _
"Nguồn: " & Err.Source, vbCritical
Err.Clear ' Reset lỗi
End Sub4. Kỹ Thuật Debug VBA
4.1. Debug.Print — In ra Immediate Window
Sub DebugDemo()
Dim i As Long
For i = 1 To 10
Debug.Print "Dòng " & i & ": " & Cells(i, 1).Value
Next i
' Nhấn Ctrl+G để mở Immediate Window xem kết quả
End Sub4.2. Breakpoint và Step Through
F9 — Đặt/gỡ Breakpoint tại dòng hiện tại
F8 — Step Into — chạy từng dòng một
Shift+F8 — Step Over — bỏ qua sub/function con
Hover chuột lên biến để xem giá trị khi đang debug
5. Template Error Handler Chuẩn
Sub ProfessionalTemplate()
On Error GoTo ErrHandler
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
' === CODE CHÍNH ===
' ...
' =================
CleanUp:
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Exit Sub
ErrHandler:
MsgBox "Lỗi #" & Err.Number & ": " & Err.Description, vbCritical
Resume CleanUp
End Sub6. Kết Luận
Error handling là kỹ năng bắt buộc để viết VBA chuyên nghiệp. Luôn dùng On Error GoTo với CleanUp section, kết hợp Debug.Print để theo dõi flow. Macro của bạn sẽ ổn định và dễ bảo trì hơn rất nhiều.
📌 Lưu ý: File demo .xlsm download từ mạng cần bỏ chặn macro trước khi sử dụng. Xem hướng dẫn chi tiết: Cách Bỏ Chặn Macro Excel.
Mục lục
Muốn làm chủ VBA?
Tham gia khóa học E-Learning của Trà Đá Data để được hướng dẫn chi tiết từ A-Z với Case Study thực tế.
Tìm hiểu ngayBình luận
Đăng nhập để tham gia bình luận
Đăng nhậpNhận bài viết mới nhất
Đăng ký để nhận thông báo khi có bài viết mới. Không spam, chỉ kiến thức chất lượng.
Bài viết liên quan
Khám phá thêm các bài viết cùng chủ đề
VBA Cơ Bản Cho Người Mới Bắt Đầu: Tự Động Hoá Excel Từ Con Số 0
Hướng dẫn VBA Excel từ A-Z cho người mới: bật Developer Tab, Macro Recorder, viết code Sub, biến, If/Else, vòng lặp, Range/Cells, và ví dụ format báo cáo tự động. Kèm file demo .xlsm.

Tự Động Hóa Báo Cáo Excel: VBA + Power Query + Email Tự Gửi Hàng Tuần
Xây dựng hệ thống báo cáo tự động hoàn chỉnh: Power Query refresh dữ liệu, VBA format và tạo PDF, Outlook gửi email tự động. Kèm Task Scheduler chạy hàng tuần không cần mở Excel.
Bỏ Chặn Macro Excel: Hướng Dẫn Bật Macro Cho File Download Từ Mạng
Hướng dẫn 4 cách bỏ chặn macro trong file Excel .xlsm download từ mạng: Properties Unblock, Enable Content, Trust Center, và PowerShell.
