Chuyển đến nội dung chính

VBA Excel: Bắt đầu như thế nào và cách giúp công việc của bạn nhẹ nhàng hơn

Tìm hiểu cách sử dụng hiệu quả VBA trong Excel để tự động hóa tác vụ, tạo macro và nâng cao kỹ năng xử lý dữ liệu của bạn với các ví dụ thực tiễn và phương pháp hay nhất.
Đã cập nhật 5 thg 6, 2026  · 10 phút đọc

Visual Basic for Applications (VBA) trong Excel là một ngôn ngữ cho phép người dùng tự động hóa các tác vụ lặp lại và mở rộng khả năng của Excel vượt xa các tính năng tiêu chuẩn. Vì vậy, dù bạn là người mới muốn tăng hiệu suất làm việc hay người dùng nâng cao đang tìm cách tinh gọn quy trình phức tạp, VBA sẽ giúp mọi việc trở nên dễ dàng hơn.

Trong hướng dẫn này, tôi sẽ giải thích các khái niệm VBA cơ bản và nâng cao. Tuy nhiên, nếu bạn mới làm quen với Excel, hãy bắt đầu với Excel Fundamentals để xây dựng nền tảng vững chắc trước khi chuyển sang VBA.

VBA trong Excel là gì?

Visual Basic for Applications (VBA) là ngôn ngữ lập trình dùng để tự động hóa tác vụ và mở rộng chức năng của các ứng dụng Microsoft Office. Bạn có thể dùng nó với Excel, Word, Access và các chương trình Office khác, mặc dù có lẽ nó được sử dụng rộng rãi nhất để tạo macro tùy chỉnh trong Excel, điều mà chúng ta sẽ cùng tìm hiểu.

Cá nhân tôi, lần đầu dùng VBA là để tự động hóa một báo cáo hàng tuần vốn mất hàng giờ tổng hợp thủ công. Chỉ với vài dòng mã, tôi rút gọn quy trình thành một lần bấm nút và tiết kiệm được rất nhiều thời gian. Từ đó, tôi biết rằng đầu tư thời gian để thành thạo nó sẽ mang lại lợi ích to lớn về năng suất.

Các thuật ngữ quan trọng trong VBA Excel

Trước khi làm việc với VBA, bạn cần hiểu những thuật ngữ và khái niệm chính. Dưới đây là danh sách một số thuật ngữ được dùng nhiều nhất mà bạn sẽ gặp khi bắt đầu tự động hóa tác vụ và xây dựng giải pháp tùy chỉnh trong Excel.

  • Module là vùng chứa mã VBA, nơi lưu trữ các thủ tục và hàm.

  • Object là các khối xây dựng của VBA. Chúng đại diện cho các thành phần như sổ làm việc, trang tính và ô.

  • Procedure là khối mã thực hiện các tác vụ cụ thể, thường được phân loại là thủ tục con (sub-procedure) hoặc hàm.

  • Statement là các câu lệnh trong một thủ tục, chỉ cho Excel (hoặc Word hoặc Access) biết cần thực hiện hành động gì.

  • Variable lưu trữ dữ liệu có thể được sử dụng và thao tác trong mã của bạn.

  • Toán tử logic so sánh giá trị và đưa ra quyết định dựa trên kết quả. Chúng bao gồm các toán tử như And, OrNot.

Bắt đầu với VBA trong Excel

Để bắt đầu dùng VBA, bạn cần truy cập trình soạn thảo VBA. Đây là nơi bạn viết và chỉnh sửa mã VBA. Hãy cùng xem cách vào đó:

Bật tab Developer 

Bước đầu tiên là bật tab Developer, vốn thường bị ẩn trên Ribbon. Thực hiện như sau:

  • Nhấp chuột phải vào bất kỳ đâu trên Ribbon

Ribbon trong Excel

Ribbon trong Excel. Ảnh: Tác giả.

  • Chọn tùy chọn Customize the Ribbon...

tùy chỉnh ribbon trong Excel

Tùy chỉnh Ribbon để bật tab Developer. Ảnh: Tác giả.

  • Một hộp thoại xuất hiện. Tích chọn Developer và bấm OK.

Chọn tùy chọn Developer từ hộp thoại và bấm OK trong Excel

Chọn tùy chọn Developer. Ảnh: Tác giả.

Giờ bạn có thể thấy tab Developer ở phía trên Ribbon.

Tab Developer trong Excel

Tab Developer đã được bật trên Ribbon. Ảnh: Tác giả.

Mở trình soạn thảo VBA 

Khi tab Developer đã được bật, bạn có thể truy cập trình soạn thảo VBA. Để thực hiện, nhấp tab Developer và chọn Visual Basic từ các tùy chọn. Bạn cũng có thể dùng phím tắt ALT + F11 để mở trực tiếp trình soạn thảo VBA.

Giao diện trình soạn thảo VBA trong Excel

Trình soạn thảo VBA. Ảnh: Tác giả.

Điều hướng giao diện VBA 

Ban đầu, trình soạn thảo VBA có thể trông đáng ngại, nhưng thực ra khá dễ dùng. Hãy hiểu qua một vài khu vực chính:

  • Code Pane là nơi bạn viết và chỉnh sửa mã VBA.
  • Project Explorer hiển thị dạng cây các dự án và module trong sổ làm việc của bạn.
  • Properties Window hiển thị thuộc tính của đối tượng được chọn để bạn tùy chỉnh cài đặt.

Giao diện VBA trong Excel

Giao diện VBA trong Excel. Ảnh: Tác giả.

Viết mã VBA trong Excel

Giờ bạn đã quen với trình soạn thảo VBA, hãy bắt đầu viết một chút mã. Mã VBA gồm nhiều phần, như thủ tục con và hàm. Đây là các tập lệnh chỉ cho Excel biết phải làm gì. Đừng lo nếu bạn chưa từng lập trình — tôi sẽ hướng dẫn từng bước. 

Viết một subroutine VBA

Trước khi viết macro, bạn cần tạo môi trường macro. Thực hiện theo các bước sau:

  • Trong trình soạn thảo VBA, chọn Insert > Module. Một module mới sẽ được tạo với tên mặc định Module1. 

Chèn module mới trong VBA

Chọn Module trong thẻ Insert. Ảnh: Tác giả.

  • Bạn có thể đổi tên module trong khung Properties.

Đổi tên module mới tạo trong VBA trong Excel

Đổi tên module VBA. Ảnh: Tác giả.

Giờ bạn đã biết cách thiết lập môi trường để tạo macro, hãy cùng tạo macro đầu tiên để hiển thị một thông báo. Theo mặc định, cửa sổ mã sẽ mở khi module được tạo. Nếu không, hãy nhấp chuột phải vào module bạn vừa tạo và chọn View Code. Cửa sổ mã sẽ xuất hiện để bạn viết macro.

Ở đây, tôi tạo một macro để hiển thị thông báo Hello, World!. Để làm vậy, tôi viết đoạn mã sau trong khung mã:

Sub ShowMessage()
    MsgBox "Hello, World!"
End Sub 

Giải thích:

  • Sub là từ khóa cho một thủ tục con, tức một khối mã thực hiện nhiệm vụ cụ thể. Trong VBA, thủ tục con không trả về giá trị.

  • ShowMessage là tên của thủ tục con. Bạn có thể đặt tên tùy ý, miễn tuân theo quy tắc đặt tên của VBA (ví dụ: không có dấu cách, không bắt đầu bằng số).

  • () được dùng để xác định tham số của thủ tục con. Vì tác vụ này không cần tham số, nên cặp ngoặc để trống.

  • MsgBox là hàm dựng sẵn của VBA để hiển thị hộp thoại thông báo trên màn hình. 

  • End Sub chỉ ra kết thúc của thủ tục con. Mọi thứ nằm giữa Sub End Sub là phần mã sẽ chạy khi thủ tục con được gọi.

  • Chuỗi văn bản trong VBA được đặt trong dấu ngoặc kép. Ở đây, chúng ta muốn chuỗi Hello, World! xuất hiện trong hộp thông báo.

Viết macro VBA trong khung mã của Excel

Viết macro. Ảnh: Tác giả.

  • Giờ là lúc chạy mã. Dùng phím tắt F5. Nếu muốn thực hiện thủ công, vào tab Developer và chọn Macros. Bấm Run. 

Chọn tùy chọn Macros dưới tab Developer và chạy Macro trong Excel

Chọn Macros trong tab Developer. Ảnh: tác giả.

Giờ bạn có thể thấy hộp thông báo xuất hiện trên trang tính Excel.

hộp thông báo trong Excel

Hộp thông báo. Ảnh: Tác giả.

Tìm hiểu về đối tượng trong VBA 

Trong VBA, object cho phép bạn điều khiển các thành phần khác nhau trong Excel và tự động hóa tác vụ để quy trình hiệu quả hơn. Có ba object chính: Workbook, Worksheet Range. Hãy hiểu từng loại qua ví dụ thực tiễn.

Đối tượng Workbook là bất kỳ tệp Excel nào đang mở. Nó cho phép chúng ta thực hiện các thao tác như thêm trang tính mới hoặc lưu các trang tính hiện có trong sổ làm việc. Trong ví dụ này, tôi muốn thêm một trang tính vào trang hiện đang mở rồi lưu lại. Ban đầu tôi có Sheet1. Để thêm trang khác, tôi viết đoạn mã sau:

Sub AddSheetAndSaveWorkbook()
    ' Adds a new worksheet to the active workbook
   ActiveWorkbook.Sheets.Add
    
    ' Saves the workbook
    ActiveWorkbook.Save
End Sub

Đoạn mã này hoạt động tương tự như trước, nhưng tôi đã thêm chú thích. Chú thích bắt đầu bằng ' và không ảnh hưởng đến mã. Ta chỉ thêm để thuận tiện, giúp mã dễ hiểu hơn. 

Bạn có thể thấy một trang tính khác, Sheet2, đã được tạo.

Thêm và lưu trang tính mới trong trang hiện có bằng VBA trong Excel

Thêm và lưu trang tính mới trong sổ hiện có bằng VBA. Ảnh: Tác giả.

Đối tượng Worksheet đại diện cho trang tính đang hoạt động trong Excel. Với nó, bạn có thể sửa đổi hay thao tác trên trang đang hoạt động. Ví dụ, tôi muốn đổi tên trang đang hoạt động. Để làm vậy, tôi nhập đoạn mã sau:

Sub RenameActiveSheet()
    ' Renames the active sheet to "Sales Report".
    ActiveSheet.Name = "Sales Report"
End Sub

Mã đổi tên worksheet bằng VBA trong Excel

Đổi tên worksheet bằng VBA. Ảnh: Tác giả.

Giờ Sheet1 đã được đổi tên thành Sales Report.

Đã đổi tên worksheet bằng VBA trong Excel

Đổi tên worksheet Excel bằng VBA. Ảnh: Tác giả.

Đối tượng Range đề cập đến một nhóm ô cụ thể hoặc một ô đơn lẻ mà chúng ta có thể xử lý theo nhu cầu.  Trong ví dụ sau, tôi chọn vùng ô từ F3 đến I3 và đổi màu nền. Để làm vậy, tôi viết đoạn mã sau:

Sub FormatRange()
    ' Selects the range from A1 to C6
    Range("F3:I3"). Select
    
    ' Changes the background color of the selected range to Green
    Selection.Interior.Color = RGB(101, 255, 143)
End Sub

Mã đổi màu vùng đã chọn bằng VBA trong Excel

Chọn vùng và đổi màu bằng VBA. Ảnh: Tác giả.

Bạn có thể thấy sự khác biệt ở kết quả. 

Kết quả đổi màu vùng đã chọn bằng VBA trong Excel

Đổi màu bằng VBA trong Excel. Ảnh: Tác giả.

Tạo biến trong VBA

Giống các ngôn ngữ lập trình khác, biến trong VBA lưu trữ hai nhóm kiểu dữ liệu chính, số và văn bản. Để sử dụng trong VBA, bạn phải khai báo biến trước bằng từ khóa theo lựa chọn của bạn, tiếp theo là tên biến và kiểu dữ liệu.

Keyword variableName As DataType

Cụ thể: 

  • Keyword có thể là Dim, Static, PublicPrivate.

  • variableName là tên bạn chọn cho biến (không có dấu cách).

  • As được dùng để khai báo kiểu biến.

  • DataType là kiểu dữ liệu của biến, chẳng hạn Integer.

Khi làm việc với biến, bạn cũng cần tuân theo một số quy tắc:

  • Độ dài phải nhỏ hơn 255 ký tự.
  • Không được có dấu cách giữa các ký tự.
  • Tên không được bắt đầu bằng số.
  • Không dùng dấu chấm trong tên.

Kiểu dữ liệu số

Các kiểu dữ liệu số trong VBA dùng để lưu trữ giá trị số.

Kiểu dữ liệu Lưu trữ Khoảng giá trị
Byte 1 Byte Lưu số nguyên từ 0 đến 255
Integer 2 Byte Lưu số nguyên trong khoảng -32.768 đến 32.767
Long 4 Byte Lưu số nguyên lớn hơn, từ -2.147.483.648 đến 2.147.483.647
Single 4 Byte Lưu số thập phân với độ chính xác đơn
Double 8 Byte Lưu số thập phân với độ chính xác kép
Currency 8 Byte Lưu số có số chữ số thập phân cố định
Variant (text) Độ dài văn bản + 22 byte 0 đến 2 tỷ ký tự

Kiểu dữ liệu phi số

Các kiểu dữ liệu phi số trong VBA lưu trữ giá trị không phải là số.

Kiểu dữ liệu Lưu trữ Khoảng giá trị
String Độ dài chuỗi Lưu văn bản
Date 8 Byte Lưu ngày và giờ
Boolean 2 Byte Lưu True hoặc False
Variant 16 Byte Lưu mọi kiểu dữ liệu và dùng khi chưa biết kiểu trước

Tự động hóa tác vụ với macro VBA Excel

Macro về bản chất là một chuỗi lệnh được tạo trong VBA để thực hiện các tác vụ lặp lại. Với macro, bạn có thể ghi lại một loạt hành động như định dạng ô, sao chép dữ liệu hoặc tính toán. Sau khi lưu macro, chúng ta có thể áp dụng lại các hành động này chỉ với một lần nhấp. Điều này tiết kiệm thời gian, đặc biệt khi làm việc với tập dữ liệu lớn hoặc tác vụ lặp lại.

Ví dụ, nếu bạn thường định dạng báo cáo theo cùng một cách, bạn có thể ghi một macro áp dụng tất cả các bước định dạng cần thiết thay vì thực hiện thủ công mỗi lần. Sau đó, bạn chỉ cần chạy macro này để định dạng dữ liệu mới. Chúng tôi đã minh họa vài ví dụ cơ bản, nhưng hãy tưởng tượng thực hiện thêm nhiều thao tác nhỏ chỉ với một cú nhấp. Ngay cả khi bạn không có kinh nghiệm lập trình, bạn vẫn có thể tự động hóa các tác vụ thường lệ để tinh gọn quy trình làm việc và giảm nguy cơ sai sót khi lặp lại thao tác thủ công.

Ghi một macro Excel 

Hãy xem cách bạn có thể ghi một macro để thực hiện vài thay đổi định dạng:

  • Đi tới tab Developer > nút Record Macro
  • Một hộp thoại xuất hiện. Đặt tên cho macro, như tôi đã đặt là FormatCells.
  • Gán phím tắt nếu muốn. Tôi gán Ctrl+S.
  • Nhấp OK để bắt đầu ghi.

Giờ macro bắt đầu ghi, hãy thực hiện các thao tác bạn muốn tự động hóa. Trong ví dụ này, tôi ghi lại vài thay đổi định dạng cho một bảng đơn giản. Khi hoàn tất, quay lại tab Developer và bấm nút Stop Recording. Bên dưới là macro khi chạy thực tế.

Ghi macro bằng VBA trong Excel. Gif: Tác giả.

Bây giờ, nếu bạn có một tập dữ liệu khác ở trang khác và muốn áp dụng cùng định dạng, thay vì định dạng lại toàn bộ, hãy nhấn phím tắt bạn đã tạo (trong trường hợp của tôi là Ctrl+S). Hoặc vào sheet2 > tab Developer > Macros > Run để chạy thủ công.

Sử dụng macro Excel. Gif: Tác giả.

Chỉnh sửa macro Excel 

Sau khi ghi macro, bạn thậm chí có thể tinh chỉnh hoặc tùy biến các thao tác. Cách làm: 

  • Vào tab Developer và nhấp Visual Basics
  • Trình soạn thảo VBA sẽ xuất hiện. Trong Project Explorer, tìm sổ làm việc chứa macro của bạn. 
  • Mở rộng thư mục Modules, rồi nhấp đúp vào module chứa macro. Cửa sổ mã sẽ hiển thị mã VBA của macro đã ghi.

Minh họa mã được thực thi khi ghi macro trong Excel

Mã macro đã ghi trong Excel. Ảnh: Tác giả.

Mỗi dòng mã hiển thị hành động bạn đã thực hiện trong quá trình ghi. Từ đây, bạn có thể chỉnh sửa mã đã ghi để tùy chỉnh macro theo ý. Trường hợp của tôi, tôi đặt Selection.Font.Bold về False để bỏ định dạng đậm. Khi chỉnh sửa xong, lưu thay đổi bằng cách bấm nút lưu hoặc nhấn Ctrl+S Run mã để áp dụng thay đổi. Tùy chỉnh macro trong VBA ở Excel

Tùy chỉnh macro VBA trong Excel. Ảnh: Tác giả.

Sau khi chạy macro, bạn có thể thấy kết quả — các cột trước đó in đậm nay không còn đậm nữa. 

Kết quả sau khi sửa macro thủ công trong VBA Excel

Sử dụng macro trong Excel. Ảnh: Tác giả

Viết macro Excel tùy chỉnh 

Có những tác vụ nâng cao mà bạn không thể ghi macro. Khi đó, bạn phải viết macro từ đầu. Ví dụ, tôi muốn sao chép dữ liệu từ một worksheet sang worksheet khác. Tôi viết macro tùy chỉnh như sau:

  • Mở trình soạn thảo VBA thủ công ở trang đầu tiên hoặc nhấn Alt+F11.
  • Chèn một module mới.
  • Viết đoạn mã sau trong khung mã.
Sub CopyData()
Sheets("Sheet1").Range("B1:E21").Copy Destination:=Sheets("Sheet2").Range("B1")
End Sub
  • Lưu macro và bấm Run.

Bây giờ, bạn có thể thấy dữ liệu từ Sheet1 đã được sao chép sang Sheet2.

Hướng dẫn từng bước viết macro tùy chỉnh bằng VBA trong Excel

Viết macro tùy chỉnh bằng VBA. Gif: Tác giả.

Lời kết 

Từ việc tự động hóa các tác vụ lặp lại đến tạo các macro phức tạp, VBA mở ra vô vàn khả năng trong Excel. Khi bạn quen dần với những điều cơ bản, hãy luyện viết mã và từ từ khám phá các tính năng nâng cao của VBA. Hãy nhớ rằng chìa khóa làm chủ VBA — hay bất kỳ ngôn ngữ lập trình nào — là thực hành đều đặn và sẵn sàng thử nghiệm. Để nâng cao kỹ năng, hãy cân nhắc khám phá thêm các tài nguyên sau. Các khóa Data Analysis in ExcelLearn Excel rất phù hợp để tìm hiểu sâu hơn về các tính năng của Excel. 

Nếu bạn muốn mở rộng kiến thức lập trình vượt ngoài VBA, hướng dẫn How to Become a Programmer in 2024 cung cấp một lộ trình rõ ràng. Hãy xem nếu bạn quan tâm đến lĩnh vực này. Ngoài ra, khóa học Financial Modeling in Excel rất phù hợp cho những ai muốn xây dựng các mô hình tài chính chi tiết.


Laiba Siddiqui's photo
Author
Laiba Siddiqui
LinkedIn
Twitter

Tôi là một chiến lược gia nội dung, yêu thích việc đơn giản hóa các chủ đề phức tạp. Tôi đã giúp các công ty như Splunk, Hackernoon và Tiiny Host tạo nội dung hấp dẫn và giàu thông tin cho khán giả của họ.

Các câu hỏi thường gặp về VBA Excel

Mục đích của câu lệnh Explicit trong VBA là gì?

Explicit giúp đảm bảo mọi biến đều được khai báo rõ ràng trước khi sử dụng, giảm lỗi và giúp mã của bạn dễ bảo trì hơn.

Làm thế nào để đặt mật khẩu bảo vệ mã VBA?

Bạn có thể bảo vệ mã VBA của mình bằng cách vào VBA editor > Tools > VBAProject Properties > thẻ Protection. Đánh dấu chọn Lock project for viewing và đặt mật khẩu.

Sự khác nhau giữa ActiveWorkbook và ThisWorkbook trong VBA là gì?

ActiveWorkbook đề cập đến sổ làm việc hiện đang được kích hoạt, có thể không chứa mã VBA. Thisworkbook đề cập đến sổ làm việc nơi chứa mã VBA, bất kể sổ làm việc nào đang hoạt động.

UserForms trong VBA là gì và dùng như thế nào?

UserForms là các hộp thoại tùy chỉnh trong VBA cho phép người dùng nhập dữ liệu. Chúng có thể được dùng để tạo biểu mẫu tương tác phục vụ nhập liệu, lựa chọn hoặc các tương tác cần giao diện tùy chỉnh.

Chủ đề

Học Excel và VBA với DataCamp

Tracks

Cơ bản về Excel

16 giờ
Nắm vững các kỹ năng cần thiết để sử dụng Excel, từ việc chuẩn bị dữ liệu, viết công thức đến tạo biểu đồ và đồ thị. Không yêu cầu kinh nghiệm trước đó.
Xem chi tiếtRight Arrow
Bắt đầu khóa học
Xem thêmRight Arrow