Trong bài viết ngày hôm nay, Gitiho sẽ hướng dẫn các bạn thao tác ẩn/ hiện Sheet Excel bằng lệnh VBA. Với thao tác này, các bạn có thể ẩn hoặc bỏ ẩn nhiều Sheet cùng một lúc tự động. Cùng tìm hiểu ngay với chúng mình nhé.
Nếu chỉ cần thực hiện ẩn Sheet trong Excel với một hoặc hai Sheet, người dùng hoàn toàn có thể thao tác trên giao diện trang tính như thông thường bằng cách nhấn chuột phải tại tên Sheet và chọn Hide.
Tuy nhiên, nếu bạn đang làm việc trên một file Excel chứa nhiều trang tính, có lẽ bạn sẽ cần biết làm tự động nhanh chóng hơn để ẩn nhiều trang tính cùng lúc thay vì ẩn lần lượt từng trang tính.
Đầu tiên, bạn cần xác định các trang tính cần ẩn. Sau đó bạn hãy vào tab Developer > nhóm Code > Visual Basic để mở cửa sổ VBA Excel. Hoặc bạn có thể nhấn tổ hợp phím tắt Alt + F11.
Tại đây, bạn hãy tạo một Module mới trong thẻ Insert và điền vào đó đoạn mã dưới đây. Sau đó nhấn F5 để chạy mã code này trên file Excel của bạn nhé:
Sub Hide_Sheet_Test01() 'Ẩn những Sheet cụ thể
Dim ar As Variant
Dim ws As Variant
'Tạo nhóm các Sheet cần thực hiện
ar=Array("Sheet1", "Sheet2")
'Lệnh ẩn Sheet
For Each ws In ar
Worksheets(ws).Visible=xlSheetHidden
Next ws
End Sub
Câu lệnh trên xác định các trang tính cần ẩn là Sheet 1 và Sheet 2. Nếu bạn muốn ẩn sheet nào thì có thể thay đổi câu lệnh theo cách tương ứng.
Sau khi đã xác định phạm vi các Sheet cần ẩn, bạn sẽ sử dụng vòng lặp For-Next trong VBA Excel để kiểm tra tất cả các Sheet tồn tại trong file Excel.
Câu lệnh Worksheets(ws).Visible=xlSheetHidden sẽ tiến hành ẩn các sheet trùng tên với phạm vi đã được xác định phía trên.
Excel có một quy tắc: Người dùng không thể ẩn toàn bộ các trang tính mà tối thiểu phải hiển thị một Sheet khi mở file.
Do đó, bạn có thể ẩn tất cả các Sheet không muốn hiển thị và để lại một Sheet cần hiển thị. Hãy áp dụng lệnh VBA Excel như sau:
Sub Hide_Sheet_Test02() 'Ẩn tất cả các Sheet chỉ chừa lại Sheet cuối cùng
Dim i As Integer
For i=1 To Worksheets.Count - 1
Sheets(i).Visible=False
Next i
End sub
Với thuộc tính .Count, lệnh Worksheets.Count - 1 sẽ tiến hành đếm tất cả các Sheet tồn tại trong file Excel của bạn rồi trừ đi 1 để hiển thị Sheet cuối cùng. Như vậy, bạn đã có thể hoàn thành thao tác ẩn tất cả các Sheet trừ sheet cuối bằng VBA.
Khi bạn cần bỏ ẩn tất cả các trang tính, bạn hoàn toàn có thể làm được điều đó bằng VBA Excel. Chúng mình sẽ chỉ cho bạn lệnh thực hiện nhé:
Sub Unhide_AllSheet() 'Bỏ ẩn tất cả các Sheet
Sub Unhide_AllSheet() ' Bỏ ẩn tất cả các Sheet
Dim ws As Worksheet
On Error Resume Next ' Bỏ qua các lỗi có thể xảy ra
' Bỏ ẩn các Sheet
For Each ws In Worksheets
ws.Visible = True
Next ws
' Vô hiệu hóa bất kỳ lỗi nào xảy ra
On Error GoTo 0
End Sub
Trong lệnh bỏ ẩn Sheet bằng VBA trên, bạn sẽ để ý thấy một mục vô hiệu hóa các lỗi xảy ra. Dòng lệnh này được thêm để xử lý các lỗi đôi khi có thể xảy ra trong quá trình chạy lệnh trên phạm vi file Excel đang mở.
Ngoài ra, bạn còn có thể tạo riêng một hàm mới phục vụ cho các thao tác lặp lại nhiều lần trong quá trình xử lý dữ liệu trên Excel của mình. Việc tạo hàm chắc chắn sẽ giúp bạn đẩy nhanh tiến độ làm việc hơn nhiều lần. Cùng tìm hiểu chi tiết cách tạo hàm bằng VBA Excel tại bài viết dưới đây nhé:
Như vậy, chúng ta đã tìm hiểu thao tác ẩn/ hiện nhiều sheet trong Excel bằng VBA. Các bạn hãy ghi nhớ hoặc lưu lại lệnh để áp dụng trong các trường hợp cần ẩn nhiều trang tính cùng lúc nhé. Để tìm hiểu thêm các thủ thuật hữu ích khác với VBA, hãy tham khảo các bài viết trên blog Gitiho và đăng ký khóa học Tuyệt đỉnh VBA với chúng mình nhé!
Gitiho chúc các bạn thành công!
Khóa học phù hợp với bất kỳ ai đang muốn tìm hiểu lại Excel từ con số 0. Giáo án được Gitiho cùng giảng viên thiết kế phù hợp với công việc thực tế tại doanh nghiệp, bài tập thực hành xuyên suốt khóa kèm đáp án và hướng dẫn giải chi tiết. Tham khảo ngay bên dưới!