Có thể bạn quan tâm: Cách Tùy Chỉnh Thanh Trạng Thái (status Bar) Trong Microsoft Excel: Hướng Dẫn Chi Tiết Từ A Đến Z
1. Giới thiệu chung về VBA trong Excel 2026
Visual Basic for Applications (VBA) là một ngôn ngữ lập trình được tích hợp sẵn trong các sản phẩm của Microsoft Office, trong đó Excel là một trong những công cụ mạnh mẽ nhất để tự động hoá công việc, xử lý dữ liệu và tạo ra các giải pháp tùy chỉnh. Đối với người dùng Excel 2026, việc cài đặt và kích hoạt VBA là bước đầu tiên để khai thác tiềm năng này.
Bài viết dưới đây sẽ cung cấp cho bạn một hướng dẫn chi tiết, từng bước một, từ việc chuẩn bị môi trường, cài đặt và kích hoạt VBA, đến việc viết macro đơn giản, quản lý bảo mật và tối ưu hoá hiệu năng. Ngoài ra, chúng tôi cũng sẽ giới thiệu một số mẹo nâng cao giúp bạn trở thành “siêu nhân” VBA trong Excel 2026.
Lưu ý: Nội dung này được viết dành cho người dùng Windows (Windows 7/8/10/11) và phiên bản Excel 2026 thuộc bộ Microsoft Office 2026 (cả 32-bit và 64-bit). Nếu bạn đang dùng Excel 2026 trên Mac, một số bước có thể khác nhau và sẽ được đề cập riêng trong phần phụ lục.
Có thể bạn quan tâm: Custom Format Cell Trong Excel: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
2. Kiểm tra phiên bản Excel 2026 và môi trường hệ thống
2.1 Xác định phiên bản 32-bit hay 64-bit
- Mở Excel 2026.
- Vào File → Account → About Excel.
- Cửa sổ hiện ra sẽ hiển thị thông tin như “Microsoft Excel 2026 MSO (16.0.XXXXX) 32-bit” hoặc “64-bit”.
Việc biết rõ kiến trúc là quan trọng vì một số thư viện và add‑in có thể chỉ hỗ trợ một trong hai kiến trúc.
2.2 Kiểm tra cài đặt .NET Framework
Mặc dù VBA không phụ thuộc trực tiếp vào .NET, nhưng nhiều add‑in và công cụ hỗ trợ VBA lại dựa vào .NET. Đảm bảo máy tính của bạn có .NET Framework 4.5 trở lên (có sẵn trong Windows 10/11). Để kiểm tra:
- Mở Control Panel → Programs → Programs and Features → Turn Windows features on or off → Kiểm tra “.NET Framework 4.x Advanced Services”.
Nếu chưa có, bạn có thể tải từ trang Microsoft: https://dotnet.microsoft.com/download/dotnet-framework.
Có thể bạn quan tâm: Hướng Dẫn Chi Tiết Xử Lý File Csv Utf‑8 Trong Excel 2026: Từ Khởi Tạo Đến Xuất Dữ Liệu
3. Kích hoạt thẻ “Developer” (Nhà phát triển) trong Excel 2026
Thẻ Developer chứa các công cụ cần thiết để viết, chỉnh sửa và quản lý macro VBA. Khi thẻ này chưa xuất hiện trên Ribbon, bạn thực hiện các bước sau:
- File → Options → Customize Ribbon.
- Ở khung Main Tabs, tích vào Developer.
- Nhấn OK.
Bây giờ, trên thanh Ribbon sẽ xuất hiện tab Developer với các nhóm: Code, Add‑ins, Controls, XML.
4. Cài đặt và cấu hình môi trường VBA
4.1 Mở cửa sổ VBA (Visual Basic Editor – VBE)
- Alt + F11: Mở VBE nhanh chóng.
- Hoặc Developer → Visual Basic.
4.2 Kiểm tra tham chiếu (References)
Trong VBE, vào Tools → References. Bạn sẽ thấy danh sách các thư viện được tham chiếu. Các mục quan trọng bao gồm:
- Visual Basic for Applications – luôn được chọn.
- Microsoft Excel xx.x Object Library – tương ứng với phiên bản Excel.
- OLE Automation, Microsoft Office xx.x Object Library – hỗ trợ các thao tác Office chung.
- Microsoft Scripting Runtime – nếu bạn cần làm việc với FileSystemObject.
- Microsoft ActiveX Data Objects xx.x Library – để kết nối cơ sở dữ liệu.
Bạn có thể tick/untick các thư viện tùy vào nhu cầu. Đối với người mới, chỉ cần giữ các mục mặc định.
4.3 Thiết lập bảo mật macro
Với mục tiêu bảo vệ máy tính khỏi macro độc hại, Excel có nhiều mức độ bảo mật:
- File → Options → Trust Center → Trust Center Settings → Macro Settings
- Các tùy chọn:
- Disable all macros without notification (không khuyến nghị cho người học).
- Disable all macros with notification (mặc định, cho phép bật macro khi mở file).
- Disable all macros except digitally signed macros (an toàn, chỉ chạy macro có chữ ký).
- Enable all macros (không an toàn, chỉ dùng trong môi trường nội bộ).
Khuyến nghị: Chọn “Disable all macros with notification”, sau đó khi mở file có macro, nhấn Enable Content.
4.4 Tạo một macro mẫu để kiểm tra
- Developer → Record Macro.
- Đặt tên:
TestMacro. - Chọn Store macro in: This Workbook.
- Thực hiện một hành động đơn giản, ví dụ: chọn ô A1 và nhập “Hello VBA”.
- Dừng ghi: Developer → Stop Recording.
Mở VBE (Alt+F11) và vào Modules → Module1. Bạn sẽ thấy mã tự động tạo:
Sub TestMacro() Range("A1").Select ActiveCell.FormulaR1C1 = "Hello VBA"
End Sub
Nếu macro chạy thành công, nghĩa là VBA đã được cài đặt và hoạt động bình thường.
5. Viết macro VBA cơ bản
5.1 Cấu trúc một macro
Sub TênMacro() ' Khai báo biến (nếu cần) Dim i As Long ' Thực hiện hành động For i = 1 To 10 Cells(i, 1).Value = "Dòng " & i Next i
End Sub
- Sub: khai báo một thủ tục (procedure) không trả về giá trị.
- Function: khai báo một hàm trả về giá trị (được dùng trong công thức Excel).
5.2 Khai báo biến và kiểu dữ liệu
| Kiểu dữ liệu | Mô tả | Ví dụ |
|---|---|---|
Integer | Số nguyên (‑32,768 đến 32,767) | Dim n As Integer |
Long | Số nguyên lớn hơn Integer | Dim total As Long |
Double | Số thực (có dấu chấm thập phân) | Dim price As Double |
String | Chuỗi ký tự | Dim name As String |
Boolean | True/False | Dim flag As Boolean |
Variant | Kiểu dữ liệu mặc định, có thể chứa bất kỳ giá trị nào | Dim anyValue |
Object | Đối tượng COM (Workbook, Worksheet, Range…) | Dim ws As Worksheet |
Khuyến nghị: Luôn khai báo kiểu dữ liệu để cải thiện hiệu năng và tránh lỗi.
5.3 Thao tác với các đối tượng Excel
Sub TaoBangTongHop() Dim wsSrc As Worksheet, wsDst As Worksheet Set wsSrc = ThisWorkbook.Worksheets("Dữ liệu") Set wsDst = ThisWorkbook.Worksheets.Add(After:=wsSrc) wsDst.Name = "Bảng Tổng Hợp" ' Sao chép tiêu đề wsSrc.Range("A1:D1").Copy Destination:=wsDst.Range("A1") ' Tính tổng cột B wsDst.Range("E2").Formula = "=SUM(" & wsSrc.Name & "!B2:B100)"
End Sub
Trong ví dụ trên, chúng ta tạo một sheet mới, sao chép tiêu đề và chèn công thức tổng.
6. Quản lý bảo mật và chữ ký số cho macro VBA
6.1 Tạo Self‑Signed Certificate (Chứng chỉ tự ký)
- Mở Microsoft Office Tools → Digital Certificate for VBA Projects (có sẵn trong bộ Office).
- Nhập tên chứng chỉ (ví dụ:
MyExcelMacroCert). - Nhấn OK.
6.2 Ký macro
- Trong VBE, vào Tools → Digital Signature.
- Chọn chứng chỉ vừa tạo và OK.
- Lưu file dưới dạng Excel Macro‑Enabled Workbook (.xlsm).
Sau khi ký, khi người dùng mở file, Excel sẽ nhận diện macro là “được tin cậy” nếu Trust Center cho phép chạy macro có chữ ký.
6.3 Thêm thư mục tin cậy (Trusted Locations)
Nếu bạn thường làm việc trong một thư mục chung, có thể thêm vào Trusted Locations để không phải bật macro mỗi lần:
- File → Options → Trust Center → Trust Center Settings → Trusted Locations → Add new location.
- Chọn thư mục và tick Subfolders of this location are also trusted.
7. Xử lý lỗi (Error Handling) trong VBA

Có thể bạn quan tâm: Cài Đặt Và Sử Dụng Hàm Vnd (vietnamese Dong) Trong Excel: Hướng Dẫn Chi Tiết Từ A Đến Z
Khi viết macro phức tạp, lỗi không thể tránh khỏi. Việc sử dụng cấu trúc On Error giúp chương trình không dừng đột ngột.
Sub DocDuLieu() On Error GoTo ErrHandler Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets("Dữ liệu") Dim rng As Range Set rng = ws.Range("A1:A" & ws.Cells(ws.Rows.Count, "A").End(xlUp).Row) ' Thực hiện một số thao tác... Exit Sub ErrHandler: MsgBox "Lỗi: " & Err.Number & " - " & Err.Description, vbCritical, "Lỗi VBA" ' Ghi log lỗi vào sheet Log (nếu có) Resume Next
End Sub
- On Error GoTo ErrHandler: chuyển tới nhãn
ErrHandlerkhi có lỗi. - Resume Next: tiếp tục thực thi từ dòng sau lỗi (cẩn thận, có thể gây dữ liệu sai).
- Err.Clear: xóa thông tin lỗi sau khi xử lý.
8. Tối ưu hoá hiệu năng macro
Tắt ScreenUpdating
vba Application.ScreenUpdating = False '...code... Application.ScreenUpdating = TrueTắt Calculation (đối với workbook lớn)
vba Application.Calculation = xlCalculationManual '...code... Application.Calculate Application.Calculation = xlCalculationAutomaticSử dụng biến mảng (Array) thay vì thao tác ô từng ô
vba Dim arr As Variant arr = ws.Range("A1:D1000").Value ' Đọc vào mảng ' Xử lý mảng trong VBA ws.Range("E1:H1000").Value = arr ' Ghi lại
- Tránh sử dụng .Select và .Activate – truy cập trực tiếp đối tượng.
vba ' Thay vì: Sheets("Sheet1").Select Range("A1").Select Selection.Value = 10 ' Nên: Sheets("Sheet1").Range("A1").Value = 10
- Sử dụng With…End With để giảm lặp lại đối tượng.
vba With Worksheets("Báo cáo") .Range("A1").Value = "Tiêu đề" .Range("A2").Formula = "=SUM(B:B)" .Columns("C:C").NumberFormat = "#,##0" End With
9. Tích hợp VBA với các nguồn dữ liệu khác
9.1 Kết nối tới SQL Server bằng ADO
Sub ConnectSQL() Dim conn As ADODB.Connection Dim rs As ADODB.Recordset Dim sConnString As String sConnString = "Provider=SQLOLEDB;Data Source=SERVERNAME;" & _ "Initial Catalog=DatabaseName;Integrated Security=SSPI;" Set conn = New ADODB.Connection conn.Open sConnString Set rs = New ADODB.Recordset rs.Open "SELECT FROM dbo.KhachHang", conn, adOpenStatic, adLockReadOnly ' Đổ dữ liệu vào sheet Sheet1.Range("A2").CopyFromRecordset rs rs.Close conn.Close
End Sub
Lưu ý: Trước khi chạy, bạn phải đánh dấu Microsoft ActiveX Data Objects xx.x Library trong Tools → References.
9.2 Đọc/ghi file CSV, TXT
Sub ImportCSV() Dim filePath As String filePath = "C:\Data\sales.csv" With Sheet1.QueryTables.Add(Connection:="TEXT;" & filePath, Destination:=Sheet1.Range("A1")) .TextFileParseType = xlDelimited .TextFileCommaDelimiter = True .Refresh BackgroundQuery:=False End With
End Sub
9.3 Gửi email Outlook từ VBA
Sub SendMail() Dim olApp As Object, olMail As Object Set olApp = CreateObject("Outlook.Application") Set olMail = olApp.CreateItem(0) ' 0 = olMailItem With olMail .To = "example@domain.com" .Subject = "Báo cáo ngày " & Format(Date, "dd/mm/yyyy") .Body = "Kính gửi, " & vbCrLf & "Đính kèm là báo cáo." .Attachments.Add "C:\Reports\Report.xlsx" .Send End With Set olMail = Nothing Set olApp = Nothing
End Sub
10. Tạo UserForm (Giao diện người dùng) trong VBA
10.1 Thêm UserForm
- Trong VBE, Insert → UserForm.
- Sử dụng Toolbox để kéo các điều khiển: Label, TextBox, CommandButton, ComboBox, ListBox.
10.2 Mã ví dụ: Form nhập dữ liệu khách hàng
'--- Code trong UserForm1 ---
Private Sub btnOK_Click() Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets("KháchHàng") Dim lastRow As Long lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row + 1 ws.Cells(lastRow, 1).Value = Me.txtMaKH.Text ws.Cells(lastRow, 2).Value = Me.txtTenKH.Text ws.Cells(lastRow, 3).Value = Me.txtDienThoai.Text ws.Cells(lastRow, 4).Value = Me.txtDiaChi.Text MsgBox "Đã lưu thông tin khách hàng.", vbInformation Me.Hide
End Sub Private Sub btnCancel_Click() Me.Hide
End Sub
10.3 Gọi UserForm từ macro
Sub ShowCustomerForm() UserForm1.Show
End Sub
Bạn có thể gắn macro ShowCustomerForm vào một nút trên sheet (Insert → Shapes → Assign Macro) để người dùng mở form dễ dàng.
11. Phân phối macro VBA tới người dùng khác
11.1 Lưu dưới dạng .xlsm hoặc .xlam
- .xlsm: Workbook có macro, thích hợp nếu macro gắn liền với dữ liệu.
- .xlam: Add‑in, cho phép cài đặt một lần và sử dụng trên bất kỳ workbook nào.
11.2 Tạo Add‑in
- Mở workbook chứa macro.
- File → Save As → Excel Add‑in (.xlam).
- Đặt tên, lưu.
- Để người dùng cài: File → Options → Add‑Ins → Excel Add‑ins → Go → Browse và chọn file .xlam.
Sau khi cài, các hàm công khai (Public Function) sẽ xuất hiện trong danh sách hàm Excel và có thể dùng trong công thức.
11.3 Sử dụng VBA Project Protection
Nếu muốn bảo vệ mã nguồn:
- Trong VBE, Tools → VBAProject Properties → Protection.
- Tick Lock project for viewing và đặt mật khẩu.
- Lưu lại workbook.
Cảnh báo: Mật khẩu có thể bị giải mã bằng công cụ bên thứ ba. Do đó, không nên dùng để bảo vệ tài sản quan trọng.
12. Các ví dụ thực tiễn thường gặp trong công việc
12.1 Tự động tạo báo cáo tuần
Sub BaoCaoTuan() Dim wsSrc As Worksheet, wsRpt As Worksheet Set wsSrc = ThisWorkbook.Worksheets("Dữ liệu") Set wsRpt = ThisWorkbook.Worksheets.Add(After:=Sheets(Sheets.Count)) wsRpt.Name = "Báo cáo " & Format(Date, "ww-yyyy") ' Sao chép tiêu đề wsSrc.Rows(1).Copy Destination:=wsRpt.Rows(1) ' Lọc dữ liệu trong tuần hiện tại Dim rng As Range, crit As String crit = ">" & Date - Weekday(Date, vbMonday) + 1 & " AND <=" & Date - Weekday(Date, vbMonday) + 7 wsSrc.Range("A1").AutoFilter Field:=1, Criteria1:=crit wsSrc.UsedRange.SpecialCells(xlCellTypeVisible).Copy _ Destination:=wsRpt.Range("A2") wsSrc.AutoFilterMode = False MsgBox "Báo cáo tuần đã được tạo tại sheet '" & wsRpt.Name & "'.", vbInformation
End Sub
12.2 Gộp nhiều file CSV vào một workbook
Sub GopCSV() Dim folderPath As String, fileName As String Dim wsDest As Worksheet, nextRow As Long folderPath = "C:\Data\CSV\" Set wsDest = ThisWorkbook.Worksheets("Dữ liệu") nextRow = wsDest.Cells(wsDest.Rows.Count, 1).End(xlUp).Row + 1 fileName = Dir(folderPath & ".csv") Do While fileName <> "" With wsDest.QueryTables.Add(Connection:="TEXT;" & folderPath & fileName, _ Destination:=wsDest.Cells(nextRow, 1)) .TextFileParseType = xlDelimited .TextFileCommaDelimiter = True .Refresh BackgroundQuery:=False End With nextRow = wsDest.Cells(wsDest.Rows.Count, 1).End(xlUp).Row + 1 fileName = Dir Loop MsgBox "Đã gộp tất cả file CSV.", vbInformation
End Sub
12.3 Kiểm tra dữ liệu trùng lặp và đánh dấu màu
Sub HighlightDuplicates() Dim rng As Range, cell As Range Set rng = Range("A2:A" & Cells(Rows.Count, "A").End(xlUp).Row) Application.ScreenUpdating = False For Each cell In rng If WorksheetFunction.CountIf(rng, cell.Value) > 1 Then cell.Interior.Color = RGB(255, 200, 200) ' màu hồng nhẹ Else cell.Interior.ColorIndex = xlNone End If Next cell Application.ScreenUpdating = True MsgBox "Hoàn thành đánh dấu trùng lặp.", vbInformation
End Sub
13. Khắc phục các vấn đề thường gặp khi cài VBA
| Vấn đề | Nguyên nhân | Giải pháp |
|---|---|---|
| Macro không chạy, thông báo “Macros have been disabled” | Cài đặt bảo mật quá cao | Vào Trust Center → Macro Settings, chọn “Disable all macros with notification” và bật macro khi mở file. |
| Lỗi “Compile error: User-defined type not defined” | Thư viện tham chiếu chưa được bật | Vào VBE → Tools → References → Tick thư viện cần thiết (ví dụ: “Microsoft Scripting Runtime”). |
| Không thể lưu file .xlsm, xuất hiện lỗi “The file cannot be saved because it is read‑only” | File đang mở ở chế độ chỉ đọc hoặc nằm trong thư mục không tin cậy | Đảm bảo file không được mở ở chế độ read‑only, hoặc thêm thư mục vào Trusted Locations. |
| Error 1004 – Application-defined or object-defined error | Tham chiếu tới đối tượng không tồn tại (ví dụ: tên sheet sai) | Kiểm tra chính tả tên sheet, dùng If WorksheetExists("TênSheet") Then …. |
| VBA không hiển thị tab Developer | Ribbon đã được tùy chỉnh | Vào File → Options → Customize Ribbon, chắc chắn tick Developer. |
14. Những tài nguyên học VBA hữu ích
- Microsoft Docs – VBA Language Reference
https://learn.microsoft.com/en-us/office/vba/api/overview/excel - Excel Macro Mastery (Bill Jelen) – Blog và video hướng dẫn chi tiết.
- Chương trình “Excel VBA for Beginners” trên Udemy – Khóa học video có bài tập thực tế.
- Stack Overflow – Cộng đồng lập trình viên, tìm kiếm giải pháp cho các lỗi cụ thể.
- VBA Express – Thư viện macro mẫu và giải thích từng hàm.
15. Kết luận
Việc cài VBA cho Excel 2026 không chỉ là một bước kỹ thuật đơn giản mà còn mở ra một thế giới tự động hoá, giảm thiểu lỗi và tăng năng suất làm việc đáng kể. Từ việc kích hoạt thẻ Developer, cấu hình bảo mật, viết macro cơ bản, đến việc tích hợp dữ liệu từ SQL, gửi email Outlook, hay tạo giao diện người dùng bằng UserForm – tất cả đều có thể thực hiện trong môi trường Excel 2026.
Những nguyên tắc tối ưu hoá (tắt ScreenUpdating, sử dụng mảng, tránh .Select) và quản lý lỗi sẽ giúp macro của bạn chạy mượt mà, ổn định. Khi đã nắm vững các kiến thức cơ bản, bạn có thể mở rộng sang việc xây dựng Add‑in (.xlam), ký số macro để phân phối an toàn, và thậm chí tích hợp với các công nghệ khác như Power Query, Power Pivot.
Hy vọng bài viết này đã cung cấp cho bạn một lộ trình chi tiết, từ “cài VBA” cho tới “làm chủ VBA” trong Excel 2026. Hãy bắt tay vào thực hành, tạo ra những giải pháp tự động hoá phù hợp với công việc và doanh nghiệp của bạn. Thành công sẽ đến với những ai không ngừng học hỏi và áp dụng!

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ẻ.
