1. Error Handling là gì?

-
- Không bị dừng đột ngột khi gặp lỗi
- Hiển thị thông báo thân thiện cho người dùng
- Ghi log lỗi để debug
- Tiếp tục chạy hoặc thoát an toàn
👉 Trong VBA Access, nếu không xử lý lỗi:
-
- Code sẽ dừng ngay lập tức
- Hiển thị thông báo lỗi khó hiểu (debug message)
2. Các loại lỗi trong VBA
2.1. Lỗi cú pháp (Syntax Error)
Sai cấu trúc code
Ví dụ:
If x = 10 Then
MsgBox "OK"
' thiếu End If
👉 Lỗi này phát hiện khi compile, không chạy được
2.2. Lỗi runtime (Runtime Error)
Xảy ra khi chương trình đang chạy
Ví dụ:
Dim x As Integer
x = 1 / 0 ' lỗi chia cho 0
👉 Đây là loại lỗi cần xử lý bằng Error Handling
2.3. Lỗi logic
-
- Code chạy nhưng kết quả sai
- Không có thông báo lỗi
3. Cú pháp xử lý lỗi trong VBA
On Error GoTo ErrorHandler
' Code chính
Exit Sub
ErrorHandler:
MsgBox "Có lỗi xảy ra"
End Sub
4. Các kiểu xử lý lỗi phổ biến
👉 Khi có lỗi → nhảy đến label xử lý lỗi
Sub TestError()
On Error GoTo Loi
Dim x As Integer
x = 1 / 0
Exit Sub
Loi:
MsgBox "Lỗi: " & Err.Description
End Sub
📌 Giải thích:
-
- Err.Description: mô tả lỗi
- Err.Number: mã lỗi
4.2. On Error Resume Next
👉 Bỏ qua lỗi, chạy tiếp dòng sau
Sub TestResume()
On Error Resume Next
Dim x As Integer
x = 1 / 0
MsgBox "Chương trình vẫn chạy"
End Sub
⚠️ Lưu ý:
-
- Dễ gây lỗi logic nếu lạm dụng
- Chỉ dùng khi chấp nhận lỗi
4.3. On Error GoTo 0
👉 Tắt chế độ xử lý lỗi
On Error GoTo 0
5. Đối tượng Err trong VBA
Đây là trái tim của Error Handling
| Thuộc tính | Ý nghĩa |
|---|---|
| Err.Number | Mã lỗi |
| Err.Description | Mô tả lỗi |
| Err.Source | Nguồn lỗi |
Ví dụ:
Sub TestErr()
On Error GoTo Loi
Dim x As Integer
x = 1 / 0
Exit Sub
Loi:
MsgBox "Mã lỗi: " & Err.Number & vbCrLf & _
"Mô tả: " & Err.Description
End Sub
6. Best Practice (Thực hành tốt)
6.1. Luôn có Exit trước ErrorHandler
Exit Sub
ErrorHandler:
👉 Tránh chạy nhầm vào block lỗi
6.2. Hiển thị lỗi rõ ràng
MsgBox "Có lỗi xảy ra: " & Err.Description, vbCritical
6.3. Ghi log lỗi (nâng cao)
Sub LogError()
Open "C:\log.txt" For Append As #1
Print #1, Now & " - " & Err.Number & " - " & Err.Description
Close #1
End Sub
6.4. Reset lỗi
Err.Clear
7. Ví dụ thực tế trong Access
Ví dụ: Xử lý lỗi khi mở form
Sub OpenFormSafe()
On Error GoTo Loi
DoCmd.OpenForm "frmKhachHang"
Exit Sub
Loi:
MsgBox "Không mở được form: " & Err.Description
End Sub
Ví dụ: Xử lý lỗi query
Sub RunQuery()
On Error GoTo Loi
DoCmd.OpenQuery "qryTest"
Exit Sub
Loi:
MsgBox "Lỗi query: " & Err.Description
End Sub
8. So sánh nhanh các phương pháp
| Phương pháp | Khi nào dùng |
|---|---|
| On Error GoTo | Xử lý lỗi chuyên nghiệp |
| Resume Next | Bỏ qua lỗi nhỏ |
| GoTo 0 | Reset |
10. 🎯 Tổng kết
Error Handling giúp hệ thống ổn định & chuyên nghiệp
Dùng On Error GoTo là chuẩn nhất
Luôn dùng Err.Description để debug


Liên kết bảng (Relationships)25-03-2026 17:13
Tạo bảng mới trong Access25-03-2026 16:47
Microsoft Access -Tạo cơ sở dữ liệu trống25-03-2026 14:44
Các Objects (đối tượng) trong Microsoft Access25-03-2026 11:52