Có thể bạn quan tâm: Cách Chèn Thêm Cột Vào Excel: Hướng Dẫn Chi Tiết Từng Bước Cho Người Mới Bắt Đầu Và Người Dùng Nâng Cao
Mở đầu: Tại sao nên sử dụng Macro trong Excel 2026?
Excel 2026 là một trong những công cụ bảng tính mạnh mẽ nhất hiện nay, được sử dụng rộng rãi trong các doanh nghiệp, tổ chức và cá nhân để thực hiện các phân tích dữ liệu, báo cáo tài chính, quản lý dự án và nhiều công việc khác. Mặc dù giao diện người dùng (GUI) của Excel đã được tối ưu hoá để người dùng có thể thực hiện đa dạng các thao tác mà không cần viết mã, nhưng khi dữ liệu ngày càng lớn và quy trình công việc ngày càng phức tạp, việc lặp đi lặp lại các thao tác thủ công sẽ gây tốn thời gian và dễ gây sai sót.
Đây chính là lúc Macro – một tập hợp các lệnh VBA (Visual Basic for Applications) – trở thành “cứu cánh” cho người dùng. Bằng cách ghi lại, viết và chạy macro, bạn có thể:
- Tự động hoá các bước lặp lại như định dạng ô, sao chép dữ liệu, tạo báo cáo.
- Tiết kiệm thời gian: một thao tác mất vài phút có thể thực hiện trong vài giây.
- Đảm bảo tính nhất quán: giảm thiểu lỗi do nhập liệu thủ công.
- Mở rộng khả năng: tạo các chức năng tùy chỉnh không có trong Excel mặc định.
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 kích hoạt môi trường lập trình, ghi lại macro, viết mã VBA, đến cách chạy, chỉnh sửa và bảo mật macro trong Excel 2026. Ngoài ra, chúng tôi cũng sẽ chia sẻ một số mẹo thực tiễn, các lỗi thường gặp và cách khắc phục, giúp bạn trở thành “bậc thầy” trong việc sử dụng macro.
Có thể bạn quan tâm: Cách Chèn Logo Chìm (watermark) Trong Excel Bằng Nhiều Phương Pháp Thực Tiêu
1. Chuẩn bị môi trường làm việc
1.1. Kích hoạt tab “Developer” (Nhà phát triển)
Mặc định, Excel 2026 không hiển thị tab Developer trên Ribbon. Để có thể tạo, chỉnh sửa và chạy macro, bạn cần bật tab này:
- Nhấn File → Options (tùy chọn).
- Chọn Customize Ribbon (Tùy chỉnh Ribbon) ở phía bên trái.
- Trong danh sách “Main Tabs” (Các tab chính), tích vào ô Developer.
- Nhấn OK.
Bây giờ bạn sẽ thấy tab Developer nằm ở phía cuối Ribbon, chứa các công cụ như Visual Basic, Macros, Record Macro, Insert, Add-Ins…
1.2. Thiết lập mức độ bảo mật macro
Excel có tính năng bảo mật macro để ngăn chặn mã độc. Để chạy macro do bạn hoặc đồng nghiệp tạo, cần cấu hình:
- Vào File → Options → Trust Center.
- Nhấn Trust Center Settings….
- Chọn Macro Settings.
- Đối với môi trường nội bộ, bạn có thể chọn Disable all macros with notification (Tắt tất cả macro nhưng thông báo) hoặc Enable all macros (not recommended; potentially dangerous code can run) (Bật tất cả macro – không khuyến nghị). Nếu muốn an toàn hơn, chọn Disable all macros with notification, sau đó khi mở file chứa macro, Excel sẽ hỏi bạn có muốn bật macro không.
- Đánh dấu Trust access to the VBA project object model nếu bạn muốn chạy mã VBA có khả năng truy cập và thay đổi các dự án VBA (thường dùng trong các add‑in hoặc tự động hoá nâng cao).
- Nhấn OK và khởi động lại Excel nếu cần.
Có thể bạn quan tâm: Chuyển Số Sang Chữ Trong Excel: Hướng Dẫn Chi Tiết, Mẹo Hay Và Các Công Thức Thực Tiễn
2. Ghi lại (Record) macro – Phương pháp nhanh cho người mới
2.1. Khi nào nên ghi lại macro?
- Khi bạn thực hiện một chuỗi thao tác lặp lại thường xuyên (định dạng bảng, tính toán, lọc dữ liệu, tạo biểu đồ…).
- Khi không có kiến thức lập trình VBA, nhưng muốn tự động hoá nhanh.
- Khi muốn tạo “bản mẫu” (template) cho các file mới.
2.2. Các bước ghi lại macro
- Bắt đầu ghi: Trên tab Developer, nhấn Record Macro.
- Đặt tên macro: Tên không được chứa dấu cách, bắt đầu bằng chữ cái, không trùng với các hàm Excel. Ví dụ:
FormatReport. - Chọn lưu trữ:
- This Workbook: Macro sẽ chỉ khả dụng trong workbook hiện tại.
- New Workbook: Tạo một workbook mới chứa macro.
- Personal Macro Workbook (
Personal.xlsb): Macro được lưu trong một file ẩn, khả dụng cho mọi workbook trên máy tính. - Ghi chú (Optional): Nhập mô tả ngắn gọn về chức năng macro.
- Nhấn OK để bắt đầu ghi.
Lưu ý: Khi ghi macro, Excel sẽ ghi lại mọi thao tác bạn thực hiện, kể cả di chuyển chuột, chọn ô không cần thiết. Vì vậy, hãy cố gắng thực hiện các bước một cách logic, ngắn gọn.
- Thực hiện các thao tác: Ví dụ, chọn cột A, đặt định dạng tiền tệ, thêm tiêu đề, áp dụng màu nền, chèn biểu đồ…
- Kết thúc ghi: Trên tab Developer, nhấn Stop Recording.
Sau khi dừng ghi, macro đã được lưu và bạn có thể chạy ngay.
2.3. Kiểm tra macro đã ghi
- Nhấn Macros trên tab Developer.
- Chọn macro vừa tạo, nhấn Run.
- Quan sát các thao tác được thực hiện tự động.
Nếu macro hoạt động đúng, bạn đã hoàn thành! Nếu không, có thể cần chỉnh sửa mã VBA (phần tiếp theo).
3. Hiểu cấu trúc cơ bản của một macro VBA
Mỗi macro trong Excel thực chất là một Sub procedure trong ngôn ngữ VBA. Dưới đây là một ví dụ đơn giản:
Sub FormatReport() ' Định dạng cột A thành tiền tệ Columns("A:A").NumberFormat = "$#,##0.00" ' Thêm tiêu đề ở hàng 1 Range("A1").Value = "Doanh thu" Range("A1").Font.Bold = True ' Tô nền màu xanh cho tiêu đề Range("A1").Interior.Color = RGB(0, 112, 192) ' Tự động điều chỉnh độ rộng cột Columns("A").AutoFit
End Sub
Các thành phần quan trọng
| Thành phần | Mô tả |
|---|---|
Sub FormatReport() | Định nghĩa một thủ tục (procedure) không trả về giá trị. Tên FormatReport là tên macro. |
' (dấu nháy) | Dòng chú thích, không thực thi. Dùng để ghi chú ý. |
Columns("A:A") | Tham chiếu tới cột A. |
.NumberFormat | Thuộc tính định dạng số. |
Range("A1") | Tham chiếu tới ô A1. |
.Value | Thuộc tính giá trị ô. |
.Font.Bold | Định dạng font chữ (đậm). |
RGB(0,112,192) | Hàm tạo màu RGB. |
AutoFit | Tự động điều chỉnh độ rộng cột. |
End Sub | Kết thúc thủ tục. |
Hiểu được các đối tượng (Range, Worksheet, Workbook) và thuộc tính/phương thức (Properties & Methods) là nền tảng để viết macro hiệu quả.
4. Viết và chỉnh sửa macro trong môi trường VBA
4.1. Mở cửa sổ VBA Editor
- Trên tab Developer, nhấn Visual Basic hoặc nhấn Alt + F11.
- Cửa sổ Microsoft Visual Basic for Applications (VBE) xuất hiện, gồm các phần:
- Project Explorer (cây thư mục các workbook, sheet, module).
- Code Window (nơi viết mã).
- Properties Window (thuộc tính của đối tượng được chọn).
4.2. Tạo Module mới

Có thể bạn quan tâm: Chèn Âm Thanh Vào Excel: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
Nếu bạn muốn viết macro từ đầu:
- Trong Project Explorer, chuột phải vào VBAProject (TênFile.xlsx) → Insert → Module.
- Một module mới (Module1) sẽ xuất hiện, bạn có thể viết code ở đây.
4.3. Đặt tên và lưu macro
- Tên macro: Đặt tên ngắn gọn, mô tả chức năng, không trùng với hàm Excel.
- Lưu file: Khi macro có chứa VBA, Excel sẽ yêu cầu lưu dưới định dạng .xlsm (Macro‑Enabled Workbook) hoặc .xlsb (Binary Workbook hỗ trợ macro). Đừng lưu thành .xlsx vì macro sẽ bị mất.
4.4. Ví dụ thực tế: Tự động tạo báo cáo doanh thu
Giả sử bạn có dữ liệu bán hàng trong sheet “Data” (cột A: Ngày, B: Sản phẩm, C: Số lượng, D: Đơn giá). Bạn muốn tạo báo cáo tổng doanh thu theo tháng và vẽ biểu đồ.
Sub CreateRevenueReport() Dim wsData As Worksheet, wsRpt As Worksheet Dim lastRow As Long, i As Long Dim dict As Object Dim key As Variant '--- Đặt tham chiếu tới sheet dữ liệu và tạo sheet báo cáo --- Set wsData = ThisWorkbook.Worksheets("Data") ' Kiểm tra nếu sheet Report đã tồn tại thì xóa On Error Resume Next Application.DisplayAlerts = False ThisWorkbook.Worksheets("Report").Delete Application.DisplayAlerts = True On Error GoTo 0 Set wsRpt = ThisWorkbook.Worksheets.Add wsRpt.Name = "Report" '--- Đọc dữ liệu và tính tổng doanh thu theo tháng --- Set dict = CreateObject("Scripting.Dictionary") lastRow = wsData.Cells(wsData.Rows.Count, "A").End(xlUp).Row For i = 2 To lastRow ' Giả sử hàng 1 là tiêu đề Dim dt As Date, monthKey As String, revenue As Double dt = wsData.Cells(i, "A").Value monthKey = Format(dt, "yyyy-mm") revenue = wsData.Cells(i, "C").Value wsData.Cells(i, "D").Value If dict.Exists(monthKey) Then dict(monthKey) = dict(monthKey) + revenue Else dict.Add monthKey, revenue End If Next i '--- Ghi kết quả vào sheet Report --- wsRpt.Range("A1").Value = "Tháng" wsRpt.Range("B1").Value = "Doanh thu" wsRpt.Range("A1:B1").Font.Bold = True i = 2 For Each key In dict.Keys wsRpt.Cells(i, "A").Value = key wsRpt.Cells(i, "B").Value = dict(key) i = i + 1 Next key '--- Định dạng cột doanh thu --- wsRpt.Columns("B").NumberFormat = "$#,##0.00" wsRpt.Columns("A:B").AutoFit '--- Vẽ biểu đồ cột --- Dim chartObj As ChartObject Set chartObj = wsRpt.ChartObjects.Add(Left:=300, Top:=20, Width:=500, Height:=300) With chartObj.Chart .ChartType = xlColumnClustered .SetSourceData Source:=wsRpt.Range("A1:B" & i - 1) .HasTitle = True .ChartTitle.Text = "Doanh thu theo tháng" .Axes(xlCategory).HasTitle = True .Axes(xlCategory).AxisTitle.Text = "Tháng" .Axes(xlValue).HasTitle = True .Axes(xlValue).AxisTitle.Text = "Doanh thu (USD)" End With MsgBox "Báo cáo đã được tạo thành công!", vbInformation
End Sub
Giải thích nhanh:
- Sử dụng
Scripting.Dictionaryđể lưu trữ tổng doanh thu cho mỗi tháng. - Duyệt toàn bộ dữ liệu trong sheet “Data”, tính doanh thu (
Số lượng Đơn giá) và cộng dồn vào dictionary. - Ghi kết quả ra sheet “Report”, định dạng tiền tệ và tự động điều chỉnh cột.
- Tạo một biểu đồ cột dựa trên dữ liệu đã tính.
Bạn chỉ cần sao chép đoạn code trên vào một Module, lưu file dưới dạng .xlsm và chạy macro CreateRevenueReport. Kết quả sẽ là một sheet “Report” mới với bảng và biểu đồ.
5. Các kỹ thuật nâng cao
5.1. Sử dụng vòng lặp For Each…Next với Range
Khi làm việc với một dải ô lớn, vòng lặp For Each cell In rng thường nhanh hơn và code sạch hơn.
Dim rng As Range, cell As Range
Set rng = wsData.Range("A2:A" & lastRow) For Each cell In rng ' Thực hiện xử lý trên từng ô
Next cell
5.2. Xử lý lỗi (Error Handling)
Để macro không dừng lại khi gặp lỗi, bạn nên sử dụng cấu trúc On Error.
On Error GoTo ErrHandler
' ... mã chính ...
Exit Sub ErrHandler: MsgBox "Có lỗi xảy ra: " & Err.Description, vbCritical Resume Next ' hoặc Resume CleanUp
5.3. Gọi macro từ nút (Button) trên sheet
- Vào Developer → Insert → chọn Button (Form Control).
- Vẽ nút trên sheet, cửa sổ Assign Macro hiện ra, chọn macro muốn liên kết.
- Đặt tên cho nút (chuột phải → Edit Text).
Người dùng chỉ cần nhấn nút là macro sẽ chạy, tạo giao diện thân thiện.
5.4. Sử dụng Macro trong Personal Macro Workbook
Nếu bạn muốn macro khả dụng trong mọi workbook, lưu chúng trong Personal.xlsb:
- Khi ghi macro, trong mục Store macro in, chọn Personal Macro Workbook.
- Sau khi ghi, Excel sẽ tự động tạo file
Personal.xlsb(nằm trong thư mụcXLSTART). Khi mở bất kỳ workbook nào, macro trong Personal sẽ sẵn sàng.
Lưu ý: Personal workbook luôn mở ẩn trong nền; để chỉnh sửa, mở Visual Basic → VBAProject (PERSONAL.XLSB).
5.5. Bảo mật macro: chữ ký số (Digital Signature)
Để tăng độ tin cậy và tránh cảnh báo “macro chưa đáng tin cậy”, bạn có thể ký macro bằng chứng chỉ số:
- Tạo hoặc mua chứng chỉ (Self‑Signed Certificate có thể tạo bằng công cụ SelfCert.exe trong thư mục Office).
- Trong VBE, vào Tools → Digital Signature → Choose Certificate → chọn chứng chỉ.
- Lưu file macro‑enabled. Khi mở, Excel sẽ nhận diện macro đã ký và cho phép chạy mà không hỏi.
6. Các lỗi thường gặp và cách khắc phục
| Lỗi | Nguyên nhân | Cách khắc phục |
|---|---|---|
| Compile error: Expected End Sub | Thiếu End Sub hoặc End Function. | Kiểm tra cặp Sub … End Sub hoặc Function … End Function. |
| Run-time error ‘1004’: Application-defined or object‑defined error | Tham chiếu tới đối tượng không tồn tại (sheet, range). | Đảm bảo tên sheet chính xác, dùng Worksheets("Sheet1") thay vì Sheets(1). |
| Macro disabled | Cài đặt bảo mật macro ở mức cao. | Thay đổi trong Trust Center → Macro Settings; hoặc ký macro. |
| Object required | Biến chưa được gán đối tượng (Set). | Sử dụng Set ws = ThisWorkbook.Worksheets("Data") trước khi dùng. |
| Type mismatch | Gán giá trị không phù hợp kiểu dữ liệu (String vs Long). | Kiểm tra kiểu dữ liệu, dùng CInt, CLng, CStr khi cần. |
| Overflow | Giá trị vượt quá giới hạn kiểu dữ liệu (ví dụ Long > 2,147,483,647). | Dùng kiểu Double hoặc Currency. |
Khi gặp lỗi, sử dụng Debug → Compile VBAProject để kiểm tra cú pháp, và Step Into (F8) để chạy từng dòng, xác định vị trí lỗi.
7. Tối ưu hoá hiệu suất macro
- Tắt tính năng tính toán tự động khi thực hiện thao tác lớn:
Application.Calculation = xlCalculationManual
' ... thực hiện các thao tác ...
Application.Calculation = xlCalculationAutomatic
Application.Calculate
- Tắt ScreenUpdating để ngăn Excel vẽ lại màn hình liên tục:
Application.ScreenUpdating = False
' ... code ...
Application.ScreenUpdating = True
- Tắt Events nếu macro kích hoạt các sự kiện khác (Change, Worksheet_SelectionChange…):
Application.EnableEvents = False
' ... code ...
Application.EnableEvents = True
Kết hợp ba lệnh trên sẽ giảm thời gian thực thi macro đáng kể, đặc biệt với dataset lớn (>10,000 dòng).
8. Khi nào không nên dùng macro?
- Bảo mật dữ liệu nhạy cảm: Macro có thể truy cập và thay đổi dữ liệu, do đó không nên chia sẻ file macro‑enabled cho người không tin cậy.
- Môi trường doanh nghiệp có chính sách cấm macro: Nhiều tổ chức vô hiệu hoá macro vì lo ngại virus.
- Công việc đơn giản, ít lặp lại: Đôi khi việc viết macro tốn thời gian hơn so với thực hiện thủ công.
- Cần tính di động: Các file macro không hoạt động trên Google Sheets, LibreOffice Calc… nếu muốn chia sẻ rộng rãi, hãy cân nhắc dùng Power Query hoặc công cụ khác.
9. Tổng kết
Việc chạy macro trong Excel 2026 không chỉ là một kỹ năng “đẹp mắt” mà thực sự là công cụ mạnh mẽ để tăng năng suất, giảm lỗi và mở rộng khả năng của Excel. Từ việc bật tab Developer, ghi lại macro nhanh chóng, tới việc viết và tối ưu hoá mã VBA, bạn đã nắm được toàn bộ quy trình.
- Bắt đầu: Kích hoạt Developer, cấu hình bảo mật.
- Ghi macro: Dành cho người mới, nhanh chóng tạo tự động hoá.
- Viết VBA: Hiểu đối tượng, thuộc tính, phương thức.
- Chạy và kiểm tra: Sử dụng nút, shortcut, hoặc gọi từ các macro khác.
- Bảo mật: Ký số, lưu ở Personal Macro Workbook, quản lý quyền truy cập.
- Tối ưu: Tắt tính toán, ScreenUpdating, Events.
- Xử lý lỗi: Biết các lỗi phổ biến và cách khắc phục.
Hãy thực hành ngay trên dữ liệu thực tế của bạn: tạo một macro ghi lại việc định dạng báo cáo hàng tháng, sau đó mở rộng bằng VBA để tự động tính tổng, vẽ biểu đồ và gửi email. Khi đã thành thạo, bạn sẽ nhận ra rằng Excel 2026 + Macro = Siêu công cụ giúp công việc của bạn trở nên mượt mà và chuyên nghiệp hơn bao giờ hết.
Chúc bạn thành công trong hành trình chinh phục macro!

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