Tin tức mới

Xử lý lỗi VBA ACCESS

1. Error Handling là gì?

Xử lý lỗi trong VBA Access
Xử lý lỗi trong VBA Access
Error Handling (Xử lý lỗi) là kỹ thuật giúp chương trình:

    • 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

Leave a Reply

Your email address will not be published. Required fields are marked *