Computer >> Hướng Dẫn Máy Tính >  >> Phần Mềm >> Office

Làm Chủ Excel VBA: Hiểu Macro, Module Và Procedure

Làm Chủ Excel VBA: Hiểu Macro, Module Và Procedure

Excel Visual Basic for Applications (VBA) là ngôn ngữ lập trình mạnh mẽ. VBA cho phép tự động hóa tác vụ, tạo hàm tùy chỉnh, nâng cao chức năng bảng tính. Nếu bạn bắt đầu VBA, hiểu thuật ngữ chính như Macro, Module, Procedure là thiết yếu. Các khái niệm này liên kết nhưng phục vụ mục đích khác nhau.

Trong hướng dẫn này, chúng tôi sẽ thảo luận thuật ngữ Excel VBA: Macro vs Module vs Procedure. Chúng tôi phân tích với giải thích, ví dụ, mẹo thực tế giúp bạn bắt đầu.

Để theo dõi, bạn cần Excel (bất kỳ phiên bản từ 2007 trở đi) với tab Developer bật.

  • Nếu không thấy, đi tab File >> chọn Options >> chọn Customize Ribbon >> chọn Developer bên phải

1. Macro Là Gì?

Macro là điểm vào thân thiện nhất vào VBA. Nó về cơ bản là tập hướng dẫn ghi lại hoặc viết tự động hóa tác vụ lặp trong Excel. Macro có thể tạo mà không cần kiến thức lập trình sâu bằng Macro Recorder của Excel. Nó ghi lại hành động như định dạng ô, chèn công thức, và chuyển thành mã VBA.

Về mặt thực tế, khi người ta nói "Tôi ghi macro" hoặc "Tôi viết macro", họ thường nói về Sub procedure lưu trong module. Macro Recorder của Excel tự động tạo Sub procedure.

Đặc Điểm Chính:

  • Mục Đích: Tự động hóa tác vụ tiết kiệm thời gian. Ví dụ, macro có thể sắp xếp dữ liệu, áp dụng bộ lọc, tạo báo cáo một click.
  • Cách Tạo:
    • Ghi lại: Dùng Macro Recorder cho tác vụ đơn giản.
    • Viết: Sửa hoặc viết mã thủ công trong VBA editor cho logic phức tạp.
  • Phạm Vi: Macro thường lưu trong workbook và chạy từ nút, phím tắt, hoặc hộp thoại Macros.
  • Hạn Chế: Macro ghi lại thường bao gồm mã thừa (ví dụ: chọn ô), tham chiếu ô có thể phức tạp, nên thường dọn dẹp thủ công.

Macro ≠ VBA: VBA là ngôn ngữ lập trình. Macro là tự động hóa có thể chạy được xây bằng VBA (hoặc ghi thành VBA).

Ví Dụ: Tạo Và Chạy Macro Đơn Giản

  • Đi tab Developer >> chọn Record Macro
  • Đặt tên ApplyFormat (không khoảng trắng) >> gán phím tắt nếu muốn >> click OK

Làm Chủ Excel VBA: Hiểu Macro, Module Và Procedure

  • Thực hiện hành động:
    • Chọn header
    • Đi tab Home >> chọn Bold
    • Áp dụng màu Fill và màu Font
  • Dừng ghi: Đi tab Developer >> click Stop Recording

Làm Chủ Excel VBA: Hiểu Macro, Module Và Procedure

Bằng magie, Excel sinh mã VBA như sau:

Sub ApplyFormat() ' ' ApplyFormat Macro ' ' Keyboard Shortcut: Ctrl+Shift+F ' Range("A1:G1").Select Selection.Font.Bold = True With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorAccent6 .TintAndShade = -0.249977111117893 .PatternTintAndShade = 0 End With With Selection.Font .ThemeColor = xlThemeColorDark1 .TintAndShade = 0 End With End Sub 
  • Đây là Sub (viết tắt Subroutine), một loại procedure

Làm Chủ Excel VBA: Hiểu Macro, Module Và Procedure

Chạy Macro:

  • Đi tab Developer >> chọn Macros
  • Chọn ApplyFormat >> chọn Run
  • Hoặc nhấn Ctrl+Shift+F

Làm Chủ Excel VBA: Hiểu Macro, Module Và Procedure

Bây giờ bạn có thể tạo và dùng macro tự động hóa nhanh không cần chuyên môn lập trình.

2. Procedure Là Gì?

Procedure là đơn vị cơ bản nhất; là khối mã VBA thực hiện tác vụ cụ thể. Hãy nghĩ nó như tập hướng dẫn Excel làm theo khi bạn chạy. Procedure là nơi logic thực sự sống; hãy nghĩ chúng như hàm hoặc method trong ngôn ngữ khác.

Đặc Điểm Chính:

  • Loại:
    • Sub Procedure (Sub): Thực hiện hành động nhưng không trả giá trị. Đây là thứ hầu hết người gọi "macro" trong ngữ cảnh VBA. Bắt đầu bằng Sub và kết thúc End Sub.
    • Function Procedure (Function): Thực hiện tính toán và trả giá trị. Bắt đầu Function và kết thúc End Function. Hữu ích cho công thức tùy chỉnh trong worksheet.
  • Mục Đích: Tạo mã tái sử dụng. Procedure có thể bao gồm vòng lặp, điều kiện, biến, tương tác đối tượng Excel (như ô, biểu đồ).
  • Phạm Vi: Có thể public (truy cập mọi nơi) hoặc private (giới hạn module).
  • Tham Số: Có thể nhận đầu vào (argument) cho linh hoạt.

Ví Dụ: Sub Procedure vs Function Procedure

  • Đi tab Developer >> chọn Visual Basic (hoặc nhấn Alt+F11)
  • Click Insert >> chọn Module

Sub Procedure (như Macro):

Sub ClearFormatting() Range("A1:G1").ClearFormats MsgBox "Định dạng đã xóa" End Sub 
  • Chạy code xóa định dạng, sau đó hiển thị thông báo "Định dạng đã xóa"

Làm Chủ Excel VBA: Hiểu Macro, Module Và Procedure

Function Procedure:

Function Multiply(num1 As Integer, num2 As Integer) As Integer Multiply = num1 * num2 End Function 
  • Dùng trong ô như =Multiply(E2,F2) nhân giá trị

Làm Chủ Excel VBA: Hiểu Macro, Module Và Procedure

Mối Quan Hệ Với Macro: Tất cả macro là Sub procedure, nhưng không phải Sub procedure nào cũng là macro ghi lại. Bạn có thể viết Sub procedure nâng cao vượt qua ghi lại đơn giản.

Dùng procedure khi cần mã có cấu trúc, tái sử dụng. Tách tác vụ phức tạp thành nhiều procedure để tổ chức tốt hơn.

3. Module Là Gì?

Module là container lưu trữ một hoặc nhiều procedure. Là file trong VBA editor nơi bạn viết và tổ chức mã VBA. Nó như thư mục tổ chức code, làm dễ quản lý và tái sử dụng.

Loại Module:

  • Standard Module: Loại phổ biến nhất, viết code mục đích chung.
    • Xuất hiện trong Project Explorer như "Module1", "Module2", v.v.
    • Mở VBA editor >> click Insert >> chọn Module.
  • Workbook Module (ThisWorkbook): Chứa code gắn sự kiện workbook (mở, trước đóng, v.v.).
    • Event procedure phản ứng hành động như mở/đóng workbook
  • Worksheet Module (Sheet1, Sheet2, v.v): Module đặc biệt gắn trang cụ thể.
    • Chứa event procedure phản ứng hành động như click trang, code chạy khi trang thay đổi.
  • Class Module: Module nâng cao tạo đối tượng tùy chỉnh, không cần khi bắt đầu. Dùng lập trình hướng đối tượng, như tạo class tùy chỉnh.
  • UserForm Module: Thiết kế hộp thoại tùy chỉnh.

Làm Chủ Excel VBA: Hiểu Macro, Module Và Procedure

Ví Dụ: Làm Việc Với Module

  • Đi tab Developer >> chọn Visual Basic (hoặc nhấn Alt+F11)
  • Trong Project Explorer (bên trái),
    • Click chuột phải workbook >> click Insert >> chọn Module

Làm Chủ Excel VBA: Hiểu Macro, Module Và Procedure

  • Copy-dán procedure vào:
Sub FormatSalesReport() Dim ws As Worksheet Set ws = ActiveSheet Dim lastRow As Long lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row ws.Range("A1:H1").Font.Bold = True ws.Range("A1:H" & lastRow).Borders.LineStyle = xlContinuous Dim i As Long For i = 2 To lastRow If ws.Cells(i, "H").Value > 100 Then ws.Cells(i, "H").Interior.Color = RGB(0, 255, 0) Next i End Sub 
  • Mã VBA này định dạng dữ liệu và highlight giá trị > 100 cột H
  • Lưu workbook
  • Bây giờ procedure này có sẵn như macro
  • Nhấn F5 hoặc click Run

Làm Chủ Excel VBA: Hiểu Macro, Module Và Procedure

Mối Quan Hệ Với Macro Và Procedure:

  • Module chứa procedure
  • Macro là Sub procedure lưu trong module
  • Macro không module? Không thể, vì tất cả mã VBA sống trong loại module nào đó.

Khi Dùng: Mọi dự án VBA. Bắt đầu một module tác vụ nhỏ; dùng nhiều cho dự án lớn tránh rối.

Cách Chúng Khớp Nhau: Macro → Procedure → Module

Macro là thuật ngữ người dùng cho Sub procedure. Procedure là khối mã. Module gom procedure để tổ chức.

Ví Dụ Quy Trình:

  • Ghi macro → Tạo Sub procedure trong module mới (thường "Module1")
  • Sửa procedure tinh chỉnh
  • Thêm procedure khác vào cùng module hoặc tạo module mới

Làm Chủ Excel VBA: Hiểu Macro, Module Và Procedure

Thực Hành Tốt Nhất Và Mẹo

  • Quy Ước Đặt Tên: Dùng tên mô tả như Sub CalculateTotalSales() thay Sub Macro1(). Tránh khoảng trắng; dùng CamelCase.
  • Xử Lý Lỗi: Thêm On Error Resume Next hoặc On Error GoTo ErrorHandler trong procedure làm chắc chắn hơn.
  • Bảo Mật: Macro chạy code, chỉ bật từ nguồn tin cậy (File >> Options >> Trust Center >> Macro Settings).
  • Gỡ Lỗi: Dùng F8 step through code trong VBA editor.
  • Mẹo Nâng Cao: Xuất module (.bas file) tái dùng code cross-workbook.
  • Cạm Bẫy Thường Gặp: Không nhầm Excel macro với Office Scripts (JavaScript-based Excel mới). VBA mạnh hơn tự động hóa desktop.

Kết Luận

Bằng cách làm theo hướng dẫn, bạn hiểu thuật ngữ Excel VBA: Macro vs Module vs Procedure. Hiểu thuật ngữ giúp dùng VBA hiệu quả. Giúp điều hướng tài liệu VBA, giao tiếp với người dùng Excel khác, tổ chức code hiệu quả. Bắt đầu ghi macro xem procedure hoạt động, rồi tổ chức vào module khi dự án lớn. Thực hành tự động hóa tác vụ đơn giản spreadsheet của bạn, bạn nhanh thấy sức mạnh VBA.

Nhận Bài Tập Excel Nâng Cao Miễn Phí Kèm Giải Pháp!