Làm xuất hiện toàn bộ sheet

Như bạn có thể biết, mặc định Excel không hỗ trợ người dùng hiển thị hai hoặc nhiều sheet cùng một lúc trong Excel. Menu Unhide chỉ cho phép bạn chọn một sheet tại một thời điểm để hiển thị sheet đó.



Điều này có thể làm cho quá trình hiện nhiều sheet mất rất mất thời gian, đặc biệt nếu bạn muốn hiện tất cả các sheets trong một workbook. Vì vậy, trong bài viết này, Gitiho sẽ hướng dẫn các bạn 3 cách khác nhau để nhanh chóng hiển thị nhiều sheet đồng thời.

Cách 1: Câu lệnh hiển thị toàn bộ các Sheet trong VBA

Cách nhanh nhất để hiển thị tất cả các sheet trong Excel là sử dụng macro [VBA]. Dòng mã VBA dưới đây sẽ sử dụng vòng lặp For Next Loop để lặp qua từng sheet trong workbook đang hoạt động và hiển thị từng sheet.

For Each ws In Sheets:ws.Visible=True:Next

Bạn có thể chạy mã này trong cửa sổ VB Editor's Immediate ngay lập tức chỉ trong ba bước đơn giản:

Bước 1: Trong cửa sổ tệp Excel cần hiển thị nhiều sheet đồng thời đang mở, bạn bấm tổ hợp phím Alt + F11 để mở cửa sổ Microsoft Visual Basic for Applications.

Bước 2: Tiếp tục nhấn tổ hợp phím Ctrl + G để mở cửa sổ Immediate.

Bước 3: Copy và dán dòng mã sau vào cửa sổ Immediate và nhấn Enter.

For Each ws In Sheets:ws.Visible=True:Next

Hình ảnh dưới đây sẽ cho các bạn thấy cách triển khai các bước này.


Dòng mã trên sẽ lặp qua tất cả các sheet trong workbook và đặt thuộc tính hiển thị của mỗi sheet thành “True”. Điều này làm cho mỗi sheet có thể nhìn thấy, cũng giống như việc bỏ ẩn mỗi sheet.

Ký tự dấu hai chấm “:” được sử dụng trong mã trên về cơ bản sẽ kết hợp nhiều dòng mã thành một dòng. Điều này làm cho nó có thể chạy trong cửa sổ Immediate ngay lập tức vì cửa sổ Immediate chỉ đánh giá một dòng mã tại một thời điểm.

Cách 2: Sử dụng macro để hiện nhiều sheets theo vòng lặp

Nếu bạn đang phân vân với dòng mã đó trong cách 1 thì phần này sẽ giúp giải thích rõ hơn. Mã macro bên dưới về cơ bản là cùng một dòng mã như cách 1 ở trên, nhưng nó được chia thành nhiều dòng. Điều này làm cho nó dễ dàng hơn để đọc và hiểu.

Sub Unhide_Multiple_Sheets[]
Dim ws As Worksheet

        For Each ws In ActiveWorkbook.Worksheets

                ws.Visible = xlSheetVisible

        Next ws
End Sub

Các dòng trong đoạn mã trên bắt đầu bằng “For” và “Next” đại diện cho một For-Next Loop tiếp theo. Dòng đầu tiên “For Each ws In ActiveWorkbook.Worksheets” yêu cầu macro lặp qua từng worksheet trong toàn bộ worksheets của workbook.

Dòng đó cũng tham chiếu đến biến “ws” và đặt nó đại diện cho đối tượng worksheet. Điều này có nghĩa là “ws” tạm thời đại diện cho worksheet hiện tại trong vòng lặp.


Khi dòng mã “Next ws” được nhấn, macro sẽ nhảy ngược trở lại dòng mã đầu tiên trong vòng lặp và đánh giá lại nó. Nó tiếp tục lặp qua tất cả các sheet trong worksheet của workbook [Activeworkbook.Worksheets ].

Sau đó, chúng ta có thể sử dụng “ws” bên trong vòng lặp để thay đổi các thuộc tính của worksheet hiện tại. Trong trường hợp này, chúng tôi đang đặt thuộc tính “Visible” của sheet ở chế độ hiển thị [xlSheetVible]. Thuộc tính visible có ba tùy chọn khác nhau để lựa chọn:

• xlSheetHidden

• xlSheetVeryHidden

• xlSheetVible


 Bạn cũng có thể đặt thuộc tính thành “True”, hoạt động giống như xlSheetVible.

Hiện các sheet có tên cụ thể

Điều gì sẽ xảy ra nếu chúng ta chỉ muốn hiện các sheet có chứa từ "pivot" trong tên sheet? Trong trường hợp đó chúng ta có thể thêm một câu lệnh IF đơn giản vào macro để chỉ hiện các sheet có chứa tên hoặc văn bản cụ thể.

Sub Unhide_Sheets_Containing[]
Dim ws As Worksheet

        For Each ws In ActiveWorkbook.Worksheets
        If InStr[ws.Name, "pivot"] > 0 Then
            ws.Visible = xlSheetVisible
        End If
    Next ws
End Sub

Hàm InStr sẽ tìm kiếm văn bản trong một chuỗi và trả về vị trí xuất hiện đầu tiên của văn bản. Nó là viết tắt của InString và chức năng này tương tự như các hàm SEARCH hoặc FIND trong Excel.

Vì vậy, trong trường hợp này, chúng tôi đang tìm kiếm bất kỳ sheet nào có chứa từ “pivot” trong tên sheet. Tham chiếu “ws.name” trả về tên của sheet hiện đang được đánh giá trong vòng lặp For-Next Loop.

Vì vậy, dòng này “If InStr[ws.Name, “pivot”] > 0 Then” về cơ bản cho biết, nếu từ “pivot” được tìm thấy trong tên sheet thì hàm hướng dẫn sẽ trả về một số lớn hơn 0. Câu lệnh IF sẽ đánh giá thành True và dòng mã tiếp theo sẽ được chạy để hiện sheet.

Nếu từ “pivot” không được tìm thấy trong tên sheet, thì câu lệnh IF sẽ đánh giá là False và mã sẽ bỏ qua tất cả các dòng cho đến khi đến dòng “End If”. Do đó, sheet hiện đang được đánh giá trong vòng lặp sẽ giữ thuộc tính hiển thị hiện tại của nó [hiển thị hoặc ẩn].

Mã macro trên hoạt động tốt nếu bạn cần ẩn và hiện các sheet hàng ngày, hàng tuần hoặc hàng tháng chỉ cho một bảng dữ liệu Excel làm việc thường xuyên. Và nó sẽ chạy mã macro để hiện các sheet cụ thể khi bạn mở workbook để bắt đầu làm việc.

Sau khi hoàn tất, hãy chạy cùng một mã nhưng thay đổi thuộc tính hiển thị thành xlSheetHidden để ẩn lại các sheet [bạn có thể tạo macro mới cho việc này].

Tham khảo:

Cách để tạo MENU ẩn hiện Sheet theo ý muốn trong Excel bằng VBA

Xem thêm khóa học tin học văn phòng online Tuyệt đỉnh Excel - để trở thành bậc thầy Excel trong 16 giờ

Bên cạnh đó, để không bỏ lỡ những mẹo và thủ thuật tin học văn phòng hữu ích khác, hãy theo dõi Gitiho ngay hôm nay.

Tài liệu kèm theo bài viết

Bài Viết Liên Quan

Chủ Đề