VBA Excel là gì? Cách hoạt động và ví dụ thực tế

VBA Excel là gì? Cách hoạt động và ví dụ thực tế

Chia sẻ kiến thức 06/08/2026

Khi làm việc với Excel, bạn có thể thường xuyên phải lặp lại những thao tác như định dạng bảng, lọc dữ liệu, tổng hợp báo cáo hoặc sao chép thông tin giữa nhiều trang tính. Nếu thực hiện thủ công, các công việc này dễ tốn thời gian và phát sinh sai sót.

VBA là một công cụ giúp Excel thực hiện những thao tác đó một cách tự động. Người dùng có thể viết các đoạn lệnh để xử lý dữ liệu, tạo báo cáo hoặc xây dựng quy trình làm việc phù hợp với nhu cầu riêng.

VBA Excel là ngôn ngữ lập trình được tích hợp trong Microsoft Excel, cho phép người dùng tạo macro và tự động hóa các thao tác lặp lại. Với VBA, bạn có thể yêu cầu Excel thực hiện một chuỗi hành động như nhập dữ liệu, định dạng bảng, tính toán, tạo báo cáo hoặc xử lý nhiều tệp chỉ bằng một lệnh.

Nhân viên văn phòng sử dụng VBA để tự động hóa dữ liệu Excel
VBA giúp tự động hóa nhiều thao tác lặp lại trong Excel.

VBA là gì?

VBA là viết tắt của Visual Basic for Applications. Đây là ngôn ngữ lập trình được sử dụng trong một số ứng dụng Microsoft Office, bao gồm Excel, Word và PowerPoint.

Trong Excel, VBA cho phép người dùng điều khiển nhiều đối tượng như:

  • Workbook, tức tệp Excel.
  • Worksheet, tức trang tính.
  • Range, tức ô hoặc vùng dữ liệu.
  • Chart, tức biểu đồ.
  • PivotTable, tức bảng tổng hợp.
  • Button và các thành phần tương tác khác.

Thay vì chỉ nhập công thức vào từng ô, người dùng có thể viết một chương trình nhỏ để Excel tự thực hiện nhiều bước liên tiếp.

Ví dụ, một đoạn mã VBA có thể:

  1. Mở một tệp dữ liệu.
  2. Xóa các dòng trống.
  3. Chuẩn hóa định dạng ngày tháng.
  4. Tính tổng doanh thu.
  5. Tạo một trang báo cáo mới.
  6. Lưu kết quả thành một tệp riêng.

Toàn bộ chuỗi thao tác này có thể được kích hoạt bằng một nút bấm hoặc một tổ hợp phím.

VBA Excel dùng để làm gì?

VBA được sử dụng nhiều nhất khi công việc trong Excel có tính lặp lại, cần xử lý nhiều dữ liệu hoặc đòi hỏi một quy trình gồm nhiều bước.

Tự động hóa các thao tác lặp lại

Đây là ứng dụng phổ biến nhất của VBA Excel. Người dùng có thể ghi lại hoặc lập trình những thao tác thường xuyên thực hiện, chẳng hạn:

  • Định dạng tiêu đề và bảng dữ liệu.
  • Căn chỉnh độ rộng cột.
  • Xóa các dòng không hợp lệ.
  • Tách dữ liệu thành nhiều trang tính.
  • Sao chép dữ liệu từ tệp này sang tệp khác.
  • Xuất báo cáo theo một mẫu cố định.

Khi quy trình đã được viết thành macro, người dùng không cần thực hiện lại từng bước bằng chuột và bàn phím.

Xử lý và làm sạch dữ liệu

VBA có thể kiểm tra từng dòng hoặc từng ô trong một bảng dữ liệu để tìm lỗi, thay thế giá trị hoặc chuẩn hóa nội dung.

Ví dụ, doanh nghiệp nhận dữ liệu khách hàng từ nhiều nguồn khác nhau. Một số số điện thoại có dấu cách, một số tên được viết hoa toàn bộ và một số dòng bị thiếu thông tin. VBA có thể duyệt qua bảng để xử lý các lỗi theo quy tắc đã đặt ra.

Tạo báo cáo tự động

Với những báo cáo được lập theo ngày, tuần hoặc tháng, VBA có thể hỗ trợ:

  • Tổng hợp dữ liệu từ nhiều trang tính.
  • Tính toán các chỉ số cần thiết.
  • Cập nhật bảng và biểu đồ.
  • Tạo trang báo cáo mới.
  • Lưu báo cáo theo tên và thời gian quy định.

Điều này đặc biệt hữu ích khi cấu trúc báo cáo ít thay đổi nhưng dữ liệu đầu vào được cập nhật thường xuyên.

Tương tác với nhiều tệp Excel

VBA không chỉ làm việc trong một trang tính đang mở. Một chương trình VBA có thể mở nhiều tệp trong một thư mục, đọc dữ liệu, tổng hợp kết quả rồi đóng các tệp sau khi hoàn thành.

Chẳng hạn, mỗi chi nhánh gửi một tệp báo cáo doanh thu riêng. VBA có thể lần lượt mở các tệp, lấy số liệu cần thiết và đưa vào một bảng tổng hợp chung.

Tạo biểu mẫu và công cụ nội bộ

Người dùng có thể kết hợp VBA với UserForm để tạo biểu mẫu nhập liệu. Biểu mẫu có thể chứa ô nhập thông tin, danh sách lựa chọn và nút xác nhận.

Cách làm này phù hợp với các công cụ nội bộ đơn giản như:

  • Biểu mẫu nhập thông tin khách hàng.
  • Công cụ tra cứu dữ liệu.
  • Phiếu ghi nhận yêu cầu.
  • Mẫu tính chi phí.
  • Công cụ tạo báo cáo theo lựa chọn của người dùng.

VBA Excel hoạt động như thế nào?

Để hiểu cách VBA hoạt động, có thể hình dung Excel là một hệ thống gồm nhiều đối tượng. Mỗi đối tượng có thuộc tính và hành động riêng.

Ví dụ:

  • Workbook có thể được mở, lưu hoặc đóng.
  • Worksheet có thể được tạo mới, đổi tên hoặc xóa.
  • Range có thể được đọc, ghi dữ liệu hoặc định dạng.
  • Cell có thể chứa văn bản, số hoặc công thức.

Mã VBA sẽ xác định đối tượng cần tác động và hành động Excel phải thực hiện.

Ví dụ, câu lệnh sau ghi nội dung “Xin chào” vào ô A1:

Range("A1").Value = "Xin chào"

Trong đó:

  • Range("A1") là đối tượng ô A1.
  • .Value là thuộc tính giá trị của ô.
  • "Xin chào" là nội dung được gán vào ô.

Một chương trình VBA thường được đặt trong một thủ tục bắt đầu bằng Sub và kết thúc bằng End Sub.

Sub LoiChao()
    Range("A1").Value = "Xin chào"
End Sub

Khi chạy thủ tục LoiChao, Excel sẽ nhập nội dung vào ô A1.

Người dùng kích hoạt tác vụ tự động xử lý bảng dữ liệu Excel
Một đoạn mã VBA có thể thực hiện liên tiếp nhiều thao tác trên bảng tính.

Macro và VBA có giống nhau không?

Macro và VBA có liên quan chặt chẽ nhưng không hoàn toàn giống nhau.

Macro là một chuỗi thao tác được Excel lưu lại để có thể thực hiện lần nữa. VBA là ngôn ngữ dùng để tạo, xem và chỉnh sửa các lệnh nằm phía sau macro.

Tiêu chí Macro VBA
Bản chất Chuỗi thao tác tự động Ngôn ngữ lập trình
Cách tạo Có thể dùng chức năng Record Macro Viết mã trong VBA Editor
Mức độ linh hoạt Phù hợp thao tác đơn giản Xử lý được điều kiện và quy trình phức tạp
Kiến thức lập trình Có thể không cần Cần hiểu cú pháp và tư duy logic
Khả năng chỉnh sửa Hạn chế nếu chỉ ghi thao tác Có thể tùy chỉnh chi tiết

Khi dùng Record Macro, Excel thực chất chuyển các thao tác của người dùng thành mã VBA. Người dùng có thể mở phần mã này để xem, chỉnh sửa hoặc bổ sung logic.

VBA khác công thức Excel như thế nào?

Công thức Excel và VBA đều hỗ trợ xử lý dữ liệu nhưng phục vụ những nhu cầu khác nhau.

Công thức thường phù hợp khi cần tính toán trực tiếp trong ô, chẳng hạn:

  • Tính tổng.
  • Tính trung bình.
  • Tra cứu dữ liệu.
  • Kiểm tra điều kiện.
  • Xử lý chuỗi và ngày tháng.

VBA phù hợp hơn khi cần điều khiển một quy trình gồm nhiều hành động, chẳng hạn mở tệp, sao chép dữ liệu, tạo trang tính và lưu báo cáo.

Trường hợp Nên dùng công thức Nên dùng VBA
Tính toán trong từng ô Có thể nhưng thường không cần
Kết quả tự cập nhật khi dữ liệu thay đổi Cần thiết kế thêm
Định dạng nhiều bảng tự động Hạn chế
Xử lý nhiều tệp Không
Tạo quy trình nhiều bước Hạn chế
Người mới sử dụng Dễ tiếp cận hơn Cần thời gian làm quen

Trong thực tế, công thức và VBA có thể được kết hợp. Công thức xử lý phần tính toán trong bảng, còn VBA điều khiển quá trình nhập dữ liệu, cập nhật và xuất báo cáo.

Ví dụ VBA Excel đơn giản cho người mới

Giả sử bạn có một bảng dữ liệu và muốn tự động định dạng hàng tiêu đề từ ô A1 đến D1.

Có thể sử dụng đoạn mã sau:

Sub DinhDangTieuDe()
    With Range("A1:D1")
        .Font.Bold = True
        .HorizontalAlignment = xlCenter
        .Interior.ColorIndex = 15
    End With
End Sub

Đoạn mã trên thực hiện ba thao tác:

  • In đậm nội dung.
  • Căn giữa dữ liệu.
  • Thêm màu nền cho vùng tiêu đề.

Từ khóa With giúp áp dụng nhiều lệnh cho cùng một vùng dữ liệu mà không phải viết lại Range("A1:D1") ở từng dòng.

Một ví dụ khác là tìm dòng cuối cùng có dữ liệu trong cột A:

Sub TimDongCuoi()
    Dim dongCuoi As Long

    dongCuoi = Cells(Rows.Count, "A").End(xlUp).Row

    MsgBox "Dòng cuối có dữ liệu là: " & dongCuoi
End Sub

Trong ví dụ này:

  • Dim dùng để khai báo biến.
  • dongCuoi lưu số thứ tự của dòng cuối.
  • MsgBox hiển thị kết quả trong một hộp thông báo.

Đây là kỹ thuật thường gặp khi số lượng dòng dữ liệu thay đổi theo từng lần cập nhật.

Cách mở VBA trong Excel

Để viết hoặc chỉnh sửa mã VBA, người dùng cần truy cập VBA Editor.

Bước 1: Hiển thị thẻ Developer

Trong Excel, mở phần tùy chọn của ứng dụng và tìm mục tùy chỉnh thanh công cụ. Sau đó bật thẻ Developer.

Tên và vị trí của các mục có thể khác nhau tùy phiên bản Excel, nhưng thẻ Developer thường chứa các công cụ liên quan đến macro và VBA.

Bước 2: Mở VBA Editor

Có thể mở VBA Editor từ thẻ Developer hoặc sử dụng tổ hợp phím:

Alt + F11

Cửa sổ VBA Editor sẽ hiển thị danh sách workbook, worksheet và các module trong tệp.

Bước 3: Tạo module

Trong VBA Editor, chọn workbook cần làm việc, sau đó chèn một module mới. Module là nơi thường được dùng để lưu các thủ tục VBA độc lập.

Bước 4: Nhập và chạy mã

Nhập đoạn mã vào module, đặt con trỏ trong thủ tục rồi chạy chương trình. Người dùng cũng có thể quay lại Excel và chạy macro từ danh sách macro.

Bước 5: Lưu đúng định dạng

Tệp chứa mã VBA cần được lưu ở định dạng hỗ trợ macro, phổ biến là:

.xlsm

Nếu lưu thành tệp .xlsx, mã VBA có thể không được giữ lại.

Khi nào nên sử dụng VBA Excel?

VBA phù hợp khi công việc có một hoặc nhiều đặc điểm sau:

  • Quy trình được thực hiện lặp lại thường xuyên.
  • Có nhiều bước cố định.
  • Cần xử lý nhiều trang tính hoặc nhiều tệp.
  • Dữ liệu đầu vào có cấu trúc tương đối ổn định.
  • Việc thao tác thủ công dễ gây nhầm lẫn.
  • Công thức Excel không đủ để điều khiển toàn bộ quy trình.

Ví dụ, mỗi tuần bạn phải nhận 20 tệp báo cáo có cùng cấu trúc, sao chép một số cột, loại bỏ các dòng không hợp lệ và tạo bảng tổng hợp. Đây là trường hợp có thể cân nhắc dùng VBA.

Ngược lại, không nhất thiết phải dùng VBA cho một phép tính đơn giản chỉ xuất hiện một lần. Viết và kiểm tra mã có thể mất nhiều thời gian hơn so với thao tác trực tiếp.

Chuyên viên tài chính kiểm tra báo cáo được tổng hợp bằng VBA
VBA phù hợp với các báo cáo có cấu trúc ổn định và được cập nhật thường xuyên.

Ưu điểm của VBA Excel

Tiết kiệm thời gian cho công việc lặp lại

Sau khi chương trình được thiết lập đúng, một quy trình gồm nhiều thao tác có thể được thực hiện nhanh hơn so với cách làm thủ công.

Giảm lỗi thao tác

VBA thực hiện theo các câu lệnh đã được lập trình. Điều này giúp giảm những lỗi như sao chép nhầm vùng, bỏ sót trang tính hoặc định dạng không đồng nhất.

Tuy nhiên, chương trình chỉ chính xác khi logic và dữ liệu đầu vào phù hợp. Một đoạn mã có lỗi vẫn có thể tạo ra kết quả sai.

Tùy chỉnh theo nhu cầu

Người dùng có thể xây dựng quy trình riêng thay vì chỉ sử dụng các tính năng có sẵn trên giao diện Excel.

Tích hợp tốt với hệ sinh thái Microsoft Office

VBA có thể hỗ trợ trao đổi dữ liệu giữa Excel và một số ứng dụng Office khác. Chẳng hạn, dữ liệu từ Excel có thể được đưa vào tài liệu hoặc email theo một mẫu đã xác định.

Hạn chế của VBA Excel

Cần học cú pháp và tư duy lập trình

Người mới phải làm quen với biến, vòng lặp, điều kiện, đối tượng và cách xử lý lỗi. Việc ghi macro có thể giúp bắt đầu nhanh, nhưng chưa đủ cho những bài toán phức tạp.

Mã có thể phụ thuộc vào cấu trúc tệp

Nếu tên trang tính, vị trí cột hoặc cấu trúc dữ liệu thay đổi, chương trình có thể chạy sai hoặc dừng hoạt động. Vì vậy, mã cần được thiết kế để kiểm tra dữ liệu đầu vào.

Khó bảo trì khi chương trình quá lớn

Một công cụ VBA có nhiều module và nhiều quy tắc nghiệp vụ có thể khó sửa nếu mã không được tổ chức rõ ràng hoặc thiếu chú thích.

Tệp macro cần được kiểm tra về bảo mật

Macro có khả năng thực thi lệnh trên máy tính. Người dùng không nên bật macro trong các tệp không rõ nguồn gốc.

Trong môi trường doanh nghiệp, việc sử dụng macro cũng có thể chịu sự kiểm soát của bộ phận công nghệ thông tin.

Người mới nên học VBA Excel từ đâu?

Một lộ trình cơ bản có thể bắt đầu từ các nội dung sau:

Làm quen với Record Macro

Hãy ghi lại một thao tác đơn giản như định dạng bảng hoặc sao chép dữ liệu. Sau đó mở VBA Editor để xem Excel đã tạo ra những câu lệnh nào.

Cách này giúp người mới nhận ra mối liên hệ giữa thao tác trên giao diện và mã VBA.

Hiểu các đối tượng quan trọng

Nên tập trung trước vào:

  • Workbook.
  • Worksheet.
  • Range.
  • Cells.
  • Rows và Columns.

Đây là các đối tượng xuất hiện trong phần lớn bài toán VBA dành cho Excel.

Học biến và kiểu dữ liệu

Biến giúp lưu dữ liệu tạm thời để sử dụng trong chương trình. Người học nên biết cách khai báo biến cho số nguyên, số thập phân, chuỗi ký tự và giá trị logic.

Học câu lệnh điều kiện

Cấu trúc If...Then...Else cho phép chương trình đưa ra cách xử lý khác nhau tùy dữ liệu.

Ví dụ:

If Range("A1").Value = "" Then
    MsgBox "Ô A1 đang trống"
Else
    MsgBox "Ô A1 đã có dữ liệu"
End If

Học vòng lặp

Vòng lặp giúp xử lý nhiều ô hoặc nhiều tệp mà không phải viết lặp lại câu lệnh.

Hai dạng thường gặp là:

  • For...Next.
  • Do...Loop.

Học cách xử lý lỗi

Khi dữ liệu không đúng định dạng hoặc tệp cần mở không tồn tại, chương trình có thể gặp lỗi. Người viết VBA cần dự đoán những tình huống này và đưa ra cách xử lý phù hợp.

Thực hành bằng một bài toán thực tế

Thay vì chỉ ghi nhớ cú pháp, hãy chọn một công việc đang thực hiện thủ công, chia thành từng bước nhỏ rồi tự động hóa từng phần.

Một bài tập phù hợp với người mới có thể là:

  1. Xóa các dòng trống trong bảng.
  2. Định dạng hàng tiêu đề.
  3. Tính tổng cột doanh thu.
  4. Tạo một trang tính báo cáo.
  5. Hiển thị thông báo khi hoàn thành.

Một số lỗi thường gặp khi học VBA

Dùng Select và Activate quá nhiều

Macro được ghi tự động thường chứa nhiều lệnh chọn ô hoặc kích hoạt trang tính. Các lệnh này không phải lúc nào cũng cần thiết và có thể làm chương trình dài hơn.

Thay vì:

Range("A1").Select
Selection.Value = "Báo cáo"

Có thể viết trực tiếp:

Range("A1").Value = "Báo cáo"

Không chỉ rõ workbook hoặc worksheet

Lệnh Range("A1") thường tác động lên trang tính đang được kích hoạt. Nếu người dùng chuyển sang trang khác, mã có thể tác động nhầm vị trí.

Khi cần độ chính xác cao hơn, nên chỉ rõ đối tượng:

Worksheets("BaoCao").Range("A1").Value = "Doanh thu"

Không kiểm tra dữ liệu đầu vào

Mã có thể hoạt động với bảng mẫu nhưng gặp lỗi khi dữ liệu thực tế có dòng trống, sai định dạng hoặc thiếu cột. Vì vậy, cần kiểm tra các trường hợp bất thường.

Tự động hóa một quy trình chưa ổn định

Nếu cách xử lý công việc vẫn thường xuyên thay đổi, việc viết VBA quá sớm có thể khiến chương trình phải sửa liên tục. Nên xác định quy trình rõ ràng trước khi tự động hóa.

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

Học VBA Excel có khó không?

VBA có thể tương đối dễ tiếp cận với người đã quen dùng Excel vì người học nhìn thấy ngay kết quả của từng câu lệnh trên bảng tính. Tuy nhiên, để xây dựng chương trình ổn định, người học vẫn cần luyện tư duy logic và thực hành thường xuyên.

Không biết lập trình có học VBA được không?

Có. Người mới có thể bắt đầu bằng Record Macro, sau đó học cách đọc và chỉnh sửa những đoạn mã ngắn. Việc hiểu Excel và quy trình cần tự động hóa là một lợi thế quan trọng.

VBA có thay thế được công thức Excel không?

Không hoàn toàn. Công thức phù hợp với tính toán trực tiếp và tự cập nhật trong ô, còn VBA phù hợp với tự động hóa quy trình. Hai công cụ thường được sử dụng bổ trợ cho nhau.

VBA có thể xử lý nhiều tệp cùng lúc không?

Có. VBA có thể duyệt qua các tệp trong một thư mục, mở từng tệp, đọc hoặc chỉnh sửa dữ liệu rồi lưu kết quả. Chương trình cần được viết cẩn thận để xử lý trường hợp thiếu tệp hoặc sai cấu trúc.

Có nên bật macro trong mọi tệp Excel không?

Không. Chỉ nên bật macro khi tệp đến từ nguồn đáng tin cậy và bạn hiểu mục đích của đoạn mã. Macro trong tệp không rõ nguồn gốc có thể gây rủi ro bảo mật.

Kết luận

VBA Excel là ngôn ngữ lập trình giúp mở rộng khả năng của Excel, đặc biệt trong việc tự động hóa thao tác, xử lý dữ liệu và tạo báo cáo. Công cụ này phù hợp với những công việc có tính lặp lại, nhiều bước và cần xử lý nhiều bảng hoặc nhiều tệp.

Người mới không cần bắt đầu bằng một chương trình phức tạp. Bạn có thể ghi một macro đơn giản, xem đoạn mã được tạo ra và từng bước học cách làm việc với Range, Worksheet, biến, điều kiện và vòng lặp. Khi được áp dụng vào đúng bài toán, VBA có thể giúp quy trình Excel trở nên nhanh, nhất quán và dễ kiểm soát hơn.

ĐĂNG KÝ TƯ VẤN HỌC LẬP TRÌNH TẠI FUNiX

Bình luận (
0
)

Bài liên quan

  • Tầng 0, tòa nhà FPT, 17 Duy Tân, phường Cầu Giấy, Hà Nội
  • info@funix.edu.vn
  • 0782313602 (Zalo, Viber)        

Cơ quan chủ quản: Công ty Cổ phần Giáo dục Trực tuyến FUNiX
MST: 0108171240 do Sở kế hoạch và Đầu tư thành phố Hà Nội cấp ngày 27 tháng 02 năm 2018
Trụ sở chính: Tầng 0, tòa nhà FPT, 17 Duy Tân, phường Cầu Giấy, Hà Nội.

– Văn phòng Hà Nội: Tầng 4, Tòa nhà 25T2, đường Nguyễn Thị Thập, phường Yên Hòa, Hà Nội.

– Văn phòng TP.HCM: Lầu 3A, tòa nhà 51-53 Võ Văn Tần, Phường Xuân Hòa, Thành phố Hồ Chí Minh, Việt Nam

Hotline: 078 231 3602 – Email: info@funix.edu.vn

yêu cầu gọi lại