Nếu bạn từng làm việc với VBA trong Excel hay Word, chắc chắn sẽ có lúc gặp cái thông báo khá “khó ưa”: Compile error. Nhìn thì đơn giản, nhưng mỗi lần nó hiện lên là y như rằng phải dừng lại, thở dài một chút, rồi bắt đầu dò từng dòng code. Có khi chỉ là một lỗi nhỏ xíu thôi, nhưng nếu chưa quen thì đúng là dễ “toát mồ hôi” thật.
Nhất là khi bạn đang dùng Office 2021 – phiên bản mới, nhưng lại chạy những đoạn code cũ, hoặc copy từ đâu đó về. Tưởng đâu dùng luôn được, ai ngờ vừa bấm Run là báo lỗi. Thế là ngồi tự hỏi: “Ủa, sai chỗ nào vậy?” Nghe quen không?
Thực ra, lỗi VBA Compile Error không đáng sợ như vẻ ngoài của nó. Chỉ cần hiểu đúng nguyên nhân và biết cách kiểm tra từng bước, bạn hoàn toàn có thể xử lý được. Không cần phải là dân lập trình chuyên nghiệp đâu. Chỉ cần bình tĩnh một chút là ổn.

VBA Compile Error là gì mà hay gặp vậy?
Nói đơn giản, Compile Error là lỗi xảy ra khi VBA không thể “hiểu” đoạn code của bạn. Tức là trước khi chạy, nó kiểm tra xem code có hợp lệ không. Nếu có vấn đề, nó sẽ dừng lại ngay và báo lỗi.
Khác với runtime error (lỗi khi đang chạy), compile error xảy ra trước khi code được thực thi. Điều này có một điểm hay: bạn có thể sửa lỗi ngay từ đầu, không cần chạy chương trình rồi mới phát hiện.
Nhưng cái khó là thông báo lỗi đôi khi khá chung chung. Nó chỉ báo “Compile error” kèm một dòng code bị highlight. Nhìn vào không phải lúc nào cũng hiểu ngay chuyện gì đang xảy ra.
Những nguyên nhân phổ biến gây Compile Error trong Office 2021
Thực ra, phần lớn lỗi compile đều rơi vào một số nhóm quen thuộc. Biết được mấy nhóm này là bạn đã xử lý được 70–80% tình huống rồi.
Sai chính tả trong code
Nghe đơn giản nhưng lại là lỗi phổ biến nhất. Ví dụ:
- Viết sai tên biến
- Gõ nhầm tên hàm
- Thiếu dấu ngoặc
Chỉ cần một ký tự sai là VBA không hiểu được. Và thế là báo lỗi ngay.
Thiếu hoặc sai khai báo biến
Nếu bạn dùng Option Explicit (mà nên dùng), thì mọi biến phải được khai báo rõ ràng. Nếu quên, compile error sẽ xuất hiện ngay.
Ví dụ:
i = j + 1
Nếu j chưa được khai báo, lỗi sẽ xuất hiện ngay lập tức.
Thiếu thư viện (Missing Reference)
Đây là lỗi khá hay gặp khi dùng Office 2021, nhất là với file VBA cũ. Khi bạn mở file, một số thư viện không còn tương thích hoặc bị thiếu, dẫn đến compile error.
Ví dụ: thư viện liên quan đến Outlook, Access hoặc các component cũ.
Sử dụng hàm hoặc đối tượng không tồn tại
Có những đoạn code copy từ Internet hoặc từ phiên bản Office cũ. Nhưng sang Office 2021, một số hàm hoặc đối tượng không còn hoạt động như trước. Khi đó, compile error sẽ xuất hiện.

Cách sửa lỗi VBA Compile Error trong Office 2021
Giờ đến phần quan trọng nhất. Làm sao để sửa?
Bước 1: Đọc kỹ thông báo lỗi
Nghe có vẻ hiển nhiên, nhưng nhiều người bỏ qua. VBA thường highlight dòng gây lỗi. Hãy nhìn kỹ dòng đó. Đôi khi lỗi nằm ngay trước mắt.
Đừng vội sửa lung tung. Hãy đọc lại đoạn code, xem có gì “lạ lạ” không.
Bước 2: Dùng Debug → Compile VBAProject
Trong VBA Editor, bạn vào menu:
Debug → Compile VBAProject
Chức năng này sẽ kiểm tra toàn bộ code và dừng lại ở lỗi đầu tiên. Sửa xong, bạn chạy lại. Nó sẽ tiếp tục đến lỗi tiếp theo.
Cách này rất hiệu quả để rà toàn bộ code.
Bước 3: Kiểm tra khai báo biến
Nếu có Option Explicit, hãy đảm bảo mọi biến đều được khai báo. Nếu chưa, thêm Dim vào.
Ví dụ:
Việc này không chỉ giúp tránh lỗi mà còn giúp code rõ ràng hơn.
Bước 4: Kiểm tra thư viện (Reference)
Trong VBA Editor, vào:
Tools → References
Nếu thấy dòng nào có chữ Missing, đó chính là vấn đề. Bạn có thể:
- Bỏ tick thư viện đó
- Hoặc thay bằng thư viện tương đương
Đây là lỗi rất hay gặp khi mở file VBA từ máy khác.
Bước 5: Kiểm tra tên hàm và đối tượng
Nếu dùng hàm tự viết hoặc gọi từ thư viện, hãy kiểm tra lại:
- Tên có đúng không
- Có bị viết sai không
- Có tồn tại trong Office 2021 không
Đôi khi chỉ cần sửa lại một chữ là xong.
Một vài lỗi cụ thể và cách xử lý nhanh
Để dễ hình dung hơn, đây là vài lỗi phổ biến:
“Compile error: Variable not defined”
→ Nguyên nhân: biến chưa khai báo
→ Cách sửa: thêm Dim cho biến đó
“Compile error: Sub or Function not defined”
→ Nguyên nhân: gọi hàm không tồn tại
→ Cách sửa: kiểm tra lại tên hàm hoặc thư viện
“Compile error: User-defined type not defined”
→ Nguyên nhân: thiếu thư viện
→ Cách sửa: vào References và kiểm tra
“Compile error: Syntax error”
→ Nguyên nhân: sai cú pháp (thiếu dấu, sai cấu trúc)
→ Cách sửa: kiểm tra lại dòng code

Một mẹo nhỏ: đừng sửa một lần quá nhiều thứ
Đây là kinh nghiệm khá quan trọng.
Khi gặp lỗi, đừng sửa một lúc nhiều dòng. Hãy sửa từng lỗi một, rồi compile lại. Làm vậy bạn sẽ biết chính xác lỗi nào gây vấn đề.
Nếu sửa quá nhiều thứ cùng lúc, rất dễ “chữa lành thành chữa lợn què”.
Khi nào nên nghi ngờ code không tương thích với Office 2021?
Nếu bạn đang dùng một file VBA cũ (từ Office 2007, 2010…), và thấy lỗi liên quan đến:
- ActiveX
- API Windows
- Thư viện ngoài
Thì có khả năng code đó không còn tương thích hoàn toàn. Lúc này, bạn có thể cần:
- Cập nhật code
- Hoặc tìm phiên bản mới hơn
Không phải lỗi của bạn đâu. Chỉ là môi trường đã thay đổi thôi.
Làm sao để tránh lỗi Compile Error về sau?
Có vài thói quen nhỏ nhưng rất hữu ích.
- Luôn dùng
Option Explicit - Đặt tên biến rõ ràng
- Viết code gọn, dễ đọc
- Compile thường xuyên khi viết code
Đặc biệt, đừng copy code từ đâu đó rồi dùng ngay. Hãy đọc qua một lượt. Hiểu sơ sơ cũng được, nhưng ít nhất biết nó đang làm gì.

