Đối tượng Worksheet
trong Excel VBA là một đại diện cho một bảng tính (worksheet) trong môi trường lập trình VBA. Mọi thao tác thủ công bạn thường thực hiện với worksheet, như di chuyển, sao chép, đổi tên, xóa, v.v., đều có thể được tự động hóa bằng code VBA. Worksheet**s
lại là một tập hợp tất cả các Worksheet
trong một Workbook (tập tin Excel).
Phân loại Sheet trong Excel
Worksheet
mà chúng ta thảo luận trong bài viết này chỉ là một loại Sheet trong Workbook Excel. Vậy còn những loại Sheet nào khác?
Các loại Sheet trong Excel
Trong cửa sổ Project – VBAProject của VBE (Visual Basic Editor), bạn có thể thấy Sheet1
là một Worksheet
quen thuộc. Số lượng Worksheet
trong một Workbook được xác định bằng lệnh:
Debug.Print ThisWorkbook.Worksheets.Count
Kết quả sẽ cho biết số Worksheet
hiện có. Tuy nhiên, lệnh sau lại cho kết quả khác:
Debug.Print ThisWorkbook.Sheets.Count
Lệnh này đếm tất cả các loại Sheet, bao gồm cả Chart Sheet
(sheet chỉ chứa biểu đồ) được tạo bằng Alt + F11. Vậy còn những Sheet nào khác góp phần vào tổng số này?
Macro Sheet trong Excel
Một số Sheet có tiền tố “Macro” được tạo bằng Ctrl + F11. Đây là Macro Sheet
, tồn tại để tương thích ngược với các file Excel cũ sử dụng Excel Macro 4.0 (tiền thân của VBA). Chúng không hiển thị trong VBA Project.
Tóm lại, có nhiều loại Sheet trong một Workbook, nhưng bài viết này chỉ tập trung vào Worksheet
.
Tham chiếu Worksheet trong Excel VBA
Để làm việc với Worksheet
, trước tiên bạn cần biết cách tham chiếu đến nó. Có nhiều cách, từ Application
hoặc Workbook
, tùy thuộc vào ngữ cảnh. Nếu làm việc với nhiều Workbook, hãy tham chiếu từ Workbook
:
ThisWorkbook.Worksheets("Data") 'Tham chiếu đến sheet "Data" trong Workbook hiện tại
Nếu chỉ làm việc trong một Workbook:
Worksheets("Data")
Tham chiếu theo tên
Set dataSheet = Worksheets("Data")
' Hoặc
Set dataSheet = Sheets("Data") ' Vì Worksheet cũng là một loại Sheet
Tham chiếu theo thứ tự (index)
Set dataSheet = Worksheets(1) ' Worksheet đầu tiên trong danh sách Worksheets
Set dataSheet = Sheets(5) ' Sheet thứ 5 trong danh sách Sheets (bao gồm cả các loại Sheet khác)
Thứ tự Worksheet
Tham chiếu theo Code Name
Hai phương pháp trên có nhược điểm là người dùng có thể đổi tên hoặc vị trí của Worksheet. Code Name (Name trong cửa sổ Properties của VBE) khắc phục điều này.
Code Name trong VBA
Ví dụ, dataSheet
là Code Name của Worksheet có tên hiển thị là “Data”. Bạn có thể đổi Code Name trong cửa sổ Properties.
Một số phương thức và thuộc tính của Worksheet
Phương thức Activate
Kích hoạt Worksheet (tương đương click chuột vào tên Sheet):
dataSheet.Activate
Lưu ý: Hạn chế sử dụng phương thức này nếu không cần thiết, vì có thể gây lỗi trong code.
Phương thức Calculate
Tính toán lại các công thức trên Worksheet:
Worksheets("Data").Calculate
Phương thức Copy
Sao chép Worksheet:
Worksheets("Data").Copy Before:=Worksheets("Analysis") ' Sao chép "Data" trước "Analysis"
Phương thức Delete
Xóa Worksheet (lưu ý: thao tác này không thể hoàn tác):
Sheets("Big").Delete
Xóa nhiều Sheet cùng lúc và tắt cảnh báo:
Application.DisplayAlerts = False
Sheets(Array("Big", "Analysis")).Delete
Application.DisplayAlerts = True
Phương thức Move
Di chuyển Worksheet:
Sheets("Big").Move Before:=Sheets("Data") ' Di chuyển "Big" trước "Data"
Thuộc tính Name
Lấy hoặc đổi tên Worksheet:
Debug.Print Worksheets(1).Name ' Lấy tên
Worksheets(1).Name = "Very Big Data" ' Đổi tên
Thuộc tính Visible
Ẩn/hiện Worksheet:
Worksheets("Data").Visible = xlSheetVisible ' Hiện
Worksheets("Data").Visible = xlSheetHidden ' Ẩn (vẫn có thể hiện lại)
Worksheets("Data").Visible = xlSheetVeryHidden ' Ẩn hoàn toàn
Video hướng dẫn
Bài viết này đã giới thiệu một số phương thức và thuộc tính cơ bản của đối tượng Worksheet
trong Excel VBA. Còn rất nhiều kiến thức khác để khám phá và ứng dụng vào tự động hóa công việc với Excel.
Discussion about this post