Có thể bạn quan tâm: Cách Lọc Dữ Liệu Trùng Trong 2 File Excel
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.
Có thể bạn quan tâm: Cách Chuyển Chữ Không Dấu Thành Có Dấu Trong Excel: Hướng Dẫn Chi Tiết Và Các Hàm Hữu Ích
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.Sumtrê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 Nexttạ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 SubhoặcEnd 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 Explicitnhưng chưa khai báo biến. - Cách khắc phục:
- Kiểm tra số lượng
Sub/Functionvà 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…Thenmà quênEnd If. - Lỗi trong câu lệnh
ElseIfhoặcElsekhô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 Iftrong 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
Functionmà 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 Explicitvà 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ỏ
SubhoặcFunction). - 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_Openvà kiểm traIf Not IsWorkbookOpen Thentrướ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.
Có thể bạn quan tâm: Tắt Cố Định Ngăn Trong Excel Trên Điện Thoại
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.

Có thể bạn quan tâm: Cách Đổi Đuôi File Excel Từ Xls Sang Xlsx
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/FunctioncóEnd Sub/End Function. - Kiểm tra
If…Thencó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
- 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”.
- Đặt
Option Explicit: Luôn bậtOption Explicitngay đầu module. - Kiểm tra lỗi ngay khi viết: Dùng
Debug → Compile VBA Projectsau mỗi lần sửa đổi. - Bắt lỗi và ghi log: Dùng
On Error GoTovà ghi log vào file hoặc một sheet log. - Sử dụng
With: Giúp tránh viếtSet ws = ...nhiều lần và giảm thiểu lỗi tham chiếu. - 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!

Tiến sĩ Lê Thống Nhất sinh năm 1955 tại Nghệ An, là nhà giáo, nhà báo và doanh nhân trong lĩnh vực giáo dục. Ông từng giảng dạy Toán học tại Trường THPT Chuyên Phan Bội Châu và đảm nhiệm nhiều vai trò trong ngành giáo dục, từ viết sách, biên soạn tài liệu đến sáng lập các dự án hỗ trợ học tập trực tuyến.
Ông là người sáng lập BigSchool – nền tảng giáo dục trực tuyến kết nối giáo viên và học sinh cả nước. Ngoài ra, ông còn nổi tiếng với vai trò tác giả, diễn giả truyền cảm hứng và khách mời trên nhiều chương trình truyền hình, trong đó có “Ai là triệu phú” trên truyền hình VTV.
Trong suốt sự nghiệp, Tiến sĩ Lê Thống Nhất đã nhận nhiều giải thưởng giáo dục và được biết đến như một người luôn đổi mới, ứng dụng công nghệ vào dạy và học, góp phần lan tỏa tri thức và niềm say mê học tập cho thế hệ trẻ.
