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.
Bì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ủ đề

