Bạn có tin rằng với VBA Excel, các thao tác ẩn hoặc hiện trang tính Excel, thêm mới 1 trang tính Excel, hay khóa và mở khóa trang tính Excel đều có thể được hoàn thành chỉ với 1 nút Enter? Cùng Gitiho tìm hiểu các mã VBA Excel thần kỳ này trong bài viết ngày hôm nay nhé.
Nếu bạn còn cảm thấy mơ hồ về đối tượng worksheet trong VBA Excel thì trước tiên, chúng ta hãy cùng giải đáp các thắc mắc thường gặp về đối tượng này nhé.
Worksheet Excel, hay còn được gọi với cái tên trang tính Excel, là giao diện làm việc chính của Excel, bao gồm các hàng và cột giao nhau tạo thành các ô tính. Mỗi ô tính trong trang tính Excel có thể hiển thị các giá trị văn bản, giá trị số, hoặc kết quả của các công thức hàm được nhập vào trong ô.
Trang tính Excel chính là những gì bạn nhìn thấy ngay sau khi mở phần mềm.
Sau khi nghe khái niệm worksheet, có thể bạn sẽ nghĩ đến một khái niệm trong Excel tương tự mang tên workbook. Liệu bạn có nghĩ rằng 2 khái niệm này đều được dùng để chỉ một đối tượng?
Trên thực tế, workbook và worksheet hoàn toàn khác nhau. Do đó, trong hầu hết các trường hợp, chúng ta không thể dùng chúng thay cho nhau.
Workbook là một file Excel, trong khi đó, worksheet chỉ là một trang tính Excel nằm trong file đó. Nói cách khác, một workbook có thể bao gồm nhiều worksheet. Bạn có thể hiểu workbook như một quyển sách mà các trang của nó được gọi là worksheet.
Đặt trong một mã VBA Excel cụ thể, có 4 phương pháp bạn có thể sử dụng để gọi sheet. Cụ thể là các lệnh dưới đây:
Ví dụ: Sheets("Data") là trang tính Excel có tên Data.
Ví dụ: Sheets(2) là trang tính thứ hai trên thanh sheet tab tính từ trái sang.
Ví dụ: Sheet3 là trang tính Excel có code name trong thẻ Properties VBA Excel là Sheet3.
Xem thêm: Hướng dẫn cách ẩn/hiện thanh cuộn trong Excel nhanh chóng
Một lưu ý nữa khi sử dụng VBA Excel với đối tượng worksheet là sự khác nhau giữa 2 lệnh trong VBA Excel mang tên Sheet.Activate và Sheet.Select.
Sheet.Activate là lệnh kích hoạt một sheet. Điều này nghĩa là chỉ có duy nhất một trang tính Excel được kích hoạt tại một thời điểm. Trang tính được kích hoạt với VBA Excel sẽ trở thành ActiveSheet.
Sheet.Select là lệnh chọn một sheet. Tuy nhiên, lệnh VBA Excel này có thể chọn nhiều trang tính Excel cùng một lúc.
Để chọn nhiều sheet với VBA Excel, chúng ta sẽ sử dụng lệnh viết theo Sheet Tab Name như sau:
Worksheets(Array("Sheet2", "Sheet3")).Select
Xem thêm: Giới thiệu đặc điểm file VBA Excel và các tính năng VBA cơ bản
Vậy là bạn đã sẵn sàng khám phá VBA Excel để thao tác với đối tượng trang tính Excel rồi. Chúng ta hãy cùng tìm hiểu ngay các mã VBA Excel thần kỳ có thể giúp bạn rút ngắn thời gian làm việc nhé!
Với từng lệnh VBA Excel, mình sẽ đưa ra mục đích thực hiện thao tác để dựa vào đó, chúng ta viết ra lệnh phù hợp.
1. Mục đích: Ẩn hoặc hiện toàn bộ các trang tính Excel trong file hiện tại, không quan tâm đến tên hay số thứ tự của trang tính.
2. VBA Excel
Sub MoAn_ToanBo_Sheet()
'Khai báo các biến sử dụng
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
ws.Visible = xlSheetVisible
Next ws
End Sub
Trong đó:
1. Mục đích
2. VBA Excel
Sub An_Mot_Sheet()
Sheets("MENU").Visible = xlSheetVisible
Sheets("Data").Visible = xlSheetHidden 'Ẩn Sheet có tên là Data
Sheets("MENU").Activate
End Sub
Lưu ý:
File Excel luôn phải có ít nhất một trang tính được hiển thị nên chúng ta không được ẩn tất cả các trang tính. Do đó, khi làm việc trên VBA Excel, code hiển thị Sheets("MENU") phải luôn viết trước code ẩn Sheets("Data").
Nếu bạn chưa biết cách sử dụng VBA Excel để tạo một trang tính Menu (mục lục) để liên kết đến tất cả các trang tính trong file Excel thì hãy tìm hiểu ngay cách làm trong bài viết dưới đây nhé.
Xem thêm: Hướng dẫn sử dụng VBA để tạo menu Excel liên kết nhiều chức năng
1. Mục đích
2. VBA Excel
Sub An_Sheet()
With Sheet_01
.Visible = xlSheetVisible
.Activate
End With
End Sub
Nếu thao tác ẩn sheet trong Excel của bạn với VBA Excel yêu cầu cao hơn như ẩn một số sheet nhất định hay ẩn tất cả các sheet trừ sheet cuối cùng, hãy tham khảo các mã VBA Excel trong bài viết dưới đây.
Xem thêm: Hướng dẫn thao tác ẩn Sheet trong Excel bằng lệnh VBA
1. Mục tiêu: Tạo một trang tính Excel mới dựa vào các yếu tố dưới đây.
2. VBA Excel
Sub ThemMoi_Sheet()
Dim NewWS As Worksheet, ws As Worksheet
Set NewWS = ThisWorkbook.Worksheets.Add 'Thêm mới vào vị trí mặc định
Dim TenSheet As String
TenSheet = "Data" 'Tên Sheet muốn tạo
For Each ws In ThisWorkbook.Worksheets 'Vòng lặp xét tên các Sheet đã có
If ws.Name = TenSheet Then
TenSheet = TenSheet & "(1)" 'Nếu trùng với tên đã có thì thêm ký tự (1)
End If
Next ws
NewWS.Name = TenSheet 'Đặt tên cho Sheet mới tạo
End Sub
Tại dòng 3 SetNewWS:
1. Mục đích: Khóa trang tính Excel hiện tại.
2. VBA Excel
Dưới đây là đoạn mã bạn có thể đưa vào trong module VBA Excel của mình, kết hợp với các dòng lệnh khác để tạo nên một lệnh VBA Excel hoàn chỉnh.
Worksheets("Sheet1").Protect _
Password:="nội dung mã", _
DrawingObjects:=True, _
Contents:=True, _
Scenarios:=True, _
UserInterfaceOnly:=True, _
AllowFormattingCells:=False, _
AllowFormattingColumns:=False, _
AllowFormattingRows:=False, _
AllowInsertingColumns:=False, _
AllowInsertingRows:=False, _
AllowInsertingHyperlinks:=False, _
AllowDeletingColumns:=False, _
AllowDeletingRows:=False, _
AllowSorting:=False, _
AllowFiltering:=False, _
AllowUsingPivotTables:=False
Lưu ý rằng lệnh UserInterfaceOnly:=True:
1. Mục đích: Mở khóa trang tính Excel dựa theo phương pháp khóa đã thiết lập cho trang tính.
2. VBA Excel
Dưới đây là lệnh mở khóa trang tính Excel bạn có thể đưa vào trong VBA Excel:
Worksheets("Sheet1").Unprotect
Lệnh VBA Excel này sẽ mở khóa trang tính Excel dựa vào đúng phương pháp bạn đã sử dụng để khóa trang tính.
Còn dưới đây là một lệnh hoàn chỉnh trong VBA Excel được dùng để mở khóa trang tính:
Private Sub Workbook_Open()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
ws.Protect UserInterfaceOnly:=True
Next ws
End Sub
Lưu ý: Lệnh VBA Excel này sử dụng cấu trúc vòng lặp để áp dụng lên toàn bộ các trang tính trong file Excel. Nếu bạn chỉ dùng lệnh cho một trang tính Excel thì không cần dùng cấu trúc vòng lặp này.
Vậy là chúng ta đã tìm hiểu tất cả các lệnh VBA Excel thực hiện các thao tác cơ bản dành cho đối tượng worksheet, hay còn gọi là trang tính Excel. Với các lệnh VBA Excel trong bài, chắc chắn bạn sẽ có thể dễ dàng thực hiện các công việc ẩn/hiện trang tính Excel, thêm mới trang tính Excel và khóa/mở khóa trang tính Excel.
Nếu bạn cần sưu tầm thêm các lệnh khác hữu ích trong quá trình sử dụng VBA Excel, hãy tham khảo thêm các bài viết về chủ đề VBA Excel trên blog Gitiho. Còn nếu bạn muốn học cách tự viết các lệnh VBA Excel từ A-Z, các khóa học lập trình VBA trong Excel của Gitiho là lựa chọn phù hợp nhất dành cho bạn.
Khóa học sẽ cung cấp cho bạn các kiến thức cơ bản và từng bước viết code, đọc hiểu code và sửa code với VBA Excel.
Gitiho xin cảm ơn bạn đọc và chúc bạn thành công!
Nếu công việc của bạn liên quan nhiều đến quản lý, phân tích dữ liệu và làm báo cáo trên bảng tính thì giỏi Excel thôi chưa đủ. Nếu biết thêm về VBA sẽ giúp bạn tiết kiệm tối đa thời gian làm việc nhờ làm báo cáo tự động, phân tích và xử lý số liệu chính xác tuyệt đối, đặc biệt công cần lọ mọ sửa thủ công,…
Tất tần tật những kiến thức từ cơ bản đến nâng cao về cách sử dụng VBA trong Excel sẽ được đề cập trong khóa học VBAG01: Tuyệt đỉnh VBA - Tự động hóa Excel với lập trình VBA tại Gitiho
Hãy nhấn vào Học thử hoặc Đăng ký ngay!