Lỗi Microsoft Visual Basic For Applications Trong Excel 2026: Nguyên Nhân, Triệu Chứng Và Cách Khắc Phục

Giới thiệu chung

Microsoft Excel 2026 là một trong những ứng dụng bảng tính phổ biến nhất trong doanh nghiệp và cá nhân. VBA (Visual Basic for Applications) – ngôn ngữ lập trình tích hợp trong Excel – giúp người dùng mở rộng chức năng, tự động hoá quy trình và tạo ra những macro phức tạp. Tuy nhiên, khi làm việc với VBA, người dùng thường gặp phải nhiều lỗi khác nhau. Những lỗi này có thể làm gián đoạn công việc, mất dữ liệu hoặc thậm chí làm phần mềm bị sập.

Bài viết này sẽ chỉ ra một số lỗi phổ biến nhất gặp phải khi sử dụng VBA trong Excel 2026ื่, phân tích nguyên nhân, giải thích biểu hiện và cung cấp các phương pháp khắc phục chi tiết. Mục tiêu là giúp bạn nhanh chóng xác định và sửa lỗi, đồng thời nâng cao kỹ năng lập trình VBA của mình.

1. Các lỗi thường gặp trong VBA Excel 2026

1.1 Lỗi “Run-time error ‘1004’: Application-defined or object-defined error”

  • Triệu chứng: Khi chạy macro, Excel hiện thông báo lỗi “Run-time error ‘1004’” và dừng thực thi. Thông thường, lỗi này xuất hiện khi thao tác trên đối tượng (sheet, range, chart) không hợp lệ.
  • Nguyên nhân:
  • Tham chiếu tới một sheet hoặc range không tồn tại (tên sheet sai, range sai tọa độ).
  • Thử thay đổi thuộc tính của một đối tượng bị bảo vệ (ví dụ, cố gắng ghi vào sheet bảo vệ).
  • Dùng phương thức không hợp lệ (ví dụ, WorksheetFunction.Sum trên một vùng không hợp lệ).
  • Cách khắc phục:
  • Kiểm tra kỹ tên sheet và range trong mã: If WorksheetExists("Sheet1") Then ….
  • Trước khi thao tác, kiểm tra tính hợp lệ: If Not Intersect(Target, Range("A1:C10")) Is Nothing Then ….
  • Giải phóng bảo vệ sheet trước khi ghi dữ liệu: Sheet1.Unprotect Password:="mypwd".
  • Sử dụng On Error Resume Next tạm thời và ghi log lỗi để phân tích sau.

1.2 Lỗi “Compile error: Expected End Sub/End Function”

  • Triệu chứng: Khi biên dịch macro (Alt+F11, F5), trình biên dịch báo “Compile error: Expected End Sub/End Function” và chỉ ra một dòng nào đó trong mã.
  • Nguyên nhân:
  • Thiếu End Sub hoặc End Function để kết thúc một block sub/function.
  • Cú pháp sai (đôi khi dấu ngoặc quấn không khớp الدفاع).
  • Đặt Option Explicit nhưng chưa khai báo biến.
  • Cách khắc phục:
  • Kiểm tra số lượng Sub/Function và chắc chắn rằng mỗi block đều có End Sub/End Function.
  • Dùng tính năng “Format → Organize Source Code” để tự động sắp xếp lại mã.
  • Thêm Option Explicit để bắt buộc khai báo biến, giúp tránh lỗi “undeclared variable”.

1.3 Lỗi “Compile error: Expected End If”

  • Triệu chứng: Khi biên dịch, thông báo “歌词: Expected End If” và báo lỗi tại dòng If … Then ….
  • Nguyên nhân:
  • Đặt If…Then mà quên End If.
  • Lỗi trong câu lệnh ElseIf hoặc Else không đúng vị trí.
  • Cách khắc phục:
  • Kiểm tra cặp If…End If đúng chỗ.
  • Sử dụng If … Then … Else … End If trong cùng một dòng nếu muốn viết ngắn gọn.
  • Sử dụng công cụ tự động kiểm tra lỗi Debug → Compile VBA Project.

1.4 Lỗi “Compile error: Expected Function/Property”

  • Triệu chứng: Khi biên dịch, báo “Compile error: Expected Function/Property” thường xuất hiện khi gọi một hàm không tồn tại.
  • Nguyên nhân:
  • Gọi hàm Function mà chưa khai báo.
  • Tên hàm sai chính tả.
  • Gọi một phương thức thuộc một đối tượng không hợp lệ.
  • Cách khắc phục:
  • Kiểm tra lại tên hàm, đảm bảo đúng chính tả và đã khai báo.
  • Đặt Option Explicit và khai báo biến/ hàm trước khi sử dụng.
  • Kiểm tra tài liệu tham khảo để chắc chắn rằng phương thức tồn tại trong đối tượng.

1.5 Lỗi “Compile error: Expected Variable or procedure name”

  • Triệu chứng: Thông báo lỗi khi biên dịch, báo “Expected Variable or procedure name” tại dòng khai báo biến hoặc hàm.
  • Nguyên nhân:
  • Khai báo biến chưa đặt tên hợp lệ (có ký tự đặc biệt, bắt đầu bằng số).
  • Gõ sai trong khai báo hàm (ví dụ, bỏ Sub hoặc Function).
  • Cách khắc phục Independing on襪:
  • Kiểm tra tên biến: không bắt đầu bằng số, không chứa dấu cách, không dùng từ khóa hệ thống.
  • Dùng Dim varName As Integer đúng cú pháp.

1.6 Lỗi “Object doesn’t support this property or method”

  • Triệu chứng: Khi thực thi, macro bị lỗi “Object doesn’t support this property or method” và dừng lại.
  • Nguyên nhân:
  • Tham chiếu tới một đối tượng không có phương thức hoặc thuộc tính mà bạn gọi.
  • Đối tượng chưa được khởi tạo hoặc đã được giải phóng.
  • Cách khắc phục:
  • Kiểm tra lại đối tượng được gán: Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1").
  • Đảm bảo phương thức tồn tại: ws.Range("A1").Value = 10.
  • Sử dụng Debug.Print để in ra tên đối tượng trước khi gọi phương thức.

1.7 Lỗi “Application-defined or object-defined error” khi mở workbook

  • Triệu chứng: Khi mở workbook chứa macro, Excel thông báo lỗi và không mở được file.
  • Nguyên nhân:
  • Macro chứa mã thao tác vào vùng dữ liệu không hợp lệ trong workbook khi mở (ví dụ, dùng ActiveSheet.Range("A1") khi workbook chưa được kích hoạt).
  • Hệ thống bảo mật trong Excel ngăn chặn macro tự động chạy.
  • Cách khắc phục:
  • Đặt macro vào sự kiện Workbook_Open và kiểm tra If Not IsWorkbookOpen Then trước khi thao tác.
  • Tắt bảo mật macro (File → Options → Trust Center → Settings → Macro Settings) hoặc ký danh tính digital.

2. Phân tích nguyên nhân sâu xa

2.1 Thiếu Option Explicit

Việc bật Option Explicit là một trong những bước quan trọng nhất để tránh lỗi biến chưa khai báo. Khi không bật, VBA sẽ tự động tạo biến khi tham chiếu, dẫn tới lỗi “undeclared variable” khi chạy macro. Nhiều lỗi “Compile error: Expected …” xuất phát từ việc thiếu khai báo biến hoặc sai chính tả trong tên biến.

Lỗi Microsoft Visual Basic For Applications Trong Excel 2026
Lỗi Microsoft Visual Basic For Applications Trong Excel 2026

2.2 Tham prognosis sai đối tượng

Trong VBA, mỗi đối tượng (Workbook, Worksheet, Range, Chart, etc.) có một tập hợp các phương thức và thuộc tính riêng. Khi gọi một phương thức không tồn tại, lỗi “Object doesn’t support this property or method” nảy sinh. Do đó, việc hiểu đúng mô hình đối tượng và cách truy cập là rất quan trọng.

2.3 Kiểm tra lỗi runtime (On Error)

Nhiều lỗi “Run-time error” có thể được xử lý bằng cách sử dụng On Error Resume Next hoặc On Error GoTo Label. Phương pháp này cho phép macro tiếp tục chạy ngay cả khi gặp lỗi, nhưng đồng thời cần ghi log lỗi để phân tích sau. Việc không kiểm tra lỗi dẫn tới macro bị sập, mất dữ liệu, gây phiền hà cho người dùng.

3. Cách khắc phục từng lỗi một cách chi tiết

3.1 Khắc phục lỗi 1004

Sub UpdateData() Dim ws As Worksheet Dim rng As Range On Error GoTo ErrHandler ' Kiểm tra sheet tồn tại On Error Resume Next Set ws = ThisWorkbook.Worksheets("DataSheet") On Error GoTo ErrHandler If ws Is Nothing Then MsgBox "Sheet DataSheet không tồn tại!", vbCritical Exit Sub End If ' Giải phóng bảo vệ nếu bảo vệ If ws.ProtectContents Then ws.Unprotect Password:="mypwd" ' Kiểm tra range hợp lệ Set rng = ws.Range("A1:C10") If rng Is Nothing Then MsgBox "Range A1:C10 không hợp lệ!", vbCritical Exit Sub End If ' Thực hiện công việc rng.Value = "Đã cập nhật" Exit Sub ErrHandler: MsgBox "Lỗi: " & Err.Description, vbCritical
End Sub

3.2 Khắc phục lỗi “Compile error: Expected End Sub/End Function”

  • Đảm bảo mỗi Sub/Function có End Sub/End Function.
  • Kiểm tra If…Then có End If.
  • Dùng Debug → Compile VBA Project để nhanh chóng phát hiện lỗi.

3.3 Khắc phục lỗi “Compile error: Expected End If”

If x > 0 Then MsgBox "x > 0"
ElseIf x = 0 Then MsgBox "x = 0"
Else MsgBox "x < 0"
End If

3.4 Khắc phục lỗi “Object doesn’t support this property or method”

Dim wb As Workbook
Set wb = Workbooks.Open("C:\temp\file.xlsx")
' Kiểm tra phương thức tồn tại
wb.Activate ' Nếu workbook chưa được mở, sẽ lỗi

3.5 Khắc phục lỗi “Application-defined or object-defined error” khi mở workbook

Trong ThisWorkbook:

Private Sub Workbook_Open() On Error GoTo ErrHandler Call InitializeData Exit Sub
ErrHandler: MsgBox "Lỗi’article khi khởi tạo: " & Err.Description, vbCritical
End Sub

4. Một số mẹo tránh lỗi khi viết VBA

  1. Sử dụng “IntelliSense”: Khi gõ tên đối tượng, Excel sẽ hiển thị danh sách phương thức và thuộc tính. Đây là công cụ giúp tránh lỗi “Object doesn’t support this property or method”.
  2. Đặt Option Explicit: Luôn bật Option Explicit ngay đầu module.
  3. Kiểm tra lỗi ngay khi viết: Dùng Debug → Compile VBA Project sau mỗi lần sửa đổi.
  4. Bắt lỗi và ghi log: Dùng On Error GoTo và ghi log vào file hoặc một sheet log.
  5. Sử dụng With: Giúp tránh viết Set ws = ... nhiều lần và giảm thiểu lỗi tham chiếu.
  6. Kiểm tra dữ liệu đầu vào: Trước khi thao tác, luôn kiểm tra dữ liệu, tránh lỗi khi dữ liệu rỗng hoặc sai kiểu.

5. Kết luận

Lỗi trong VBA Excel 2026 thường xuất phát từ cú pháp sai, tham chiếu không hợp lệ hoặc không kiểm tra lỗi kịp thời. Tuy nhiên, nếu bạn áp dụng các phương pháp kiểm tra, ghi log, và tuân thủ các quy tắc viết mã chuẩn, bạn sẽ giảm thiểu đáng kể số lỗi gặp phải. Việc hiểu rõ nguyên nhân từng lỗi, biết cách khắc phục cụ thể và áp dụng các mẹo “best practice” sẽ giúp bạn viết macro an toàn, hiệu quả và dễ bảo trì hơn.

Chúc bạn thành công trong việc sử dụng VBA để tối ưu hoá công việc trong Excel 2026!

⚠️
LƯU Ý QUAN TRỌNG: Miễn trừ trách nhiệm: Mặc dù chúng tôi luôn nỗ lực để đảm bảo tính chính xác và cập nhật của thông tin, nhưng các quy định về giáo dục và tuyển sinh có thể thay đổi theo thời gian. BigSchool không chịu trách nhiệm về bất kỳ sai sót nào hoặc kết quả phát sinh từ việc sử dụng thông tin trên trang này. Độc giả nên liên hệ trực tiếp với nhà trường hoặc cơ quan chức năng để có thông tin mới nhất. Ngoài ra, BigSchool tuyệt đối không bán sản phẩm, khóa học hay cung cấp dịch vụ được nhắc đến trong bài.

Viết một bình luận