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 file Excel. 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 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 câu lệnh trên và dán vào cửa sổ Immediate và nhấn Enter.
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.
Xem thêm: Cách ẩn sheet trong Excel và mở các sheet ẩn nhanh chóng
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.
Đ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ác cách ẩn và hiện dòng ẩn trong Excel chi tiết A-Z
Cách để tạo MENU ẩn hiện Sheet theo ý muốn trong Excel bằng VBA
Tài liệu kèm theo bài viết