Khi làm việc với những file Excel có nhiều Sheet, chắc hẳn bạn sẽ rất vất vả với việc ẩn / hiện các Sheet. Làm thế nào để ẩn được nhiều Sheet cùng lúc? Làm thế nào để bỏ ẩn (hiện) nhiều Sheet cùng lúc? Hay nói cách khác bạn có muốn 1 bảng điều khiển sẽ giúp bạn tự động ẩn hoặc hiện các Sheet trong file Excel theo ý muốn? Chỉ với 1 chút kiến thức về Excel và VBA, bạn hoàn toàn có thể tự làm được bảng điều khiển này. Hãy cùng Học Excel Online tìm hiểu cách tạo MENU ẩn hiện Sheet theo ý muốn trong Excel bằng VBA nhé.

Bạn đang xem: Code ẩn hiện sheet trong excel

Mục tiêu của bài viết này là bạn có thể tạo được 1 Sheet (MENU) mà tại đó có thể điều khiển ẩn, hiện các Sheet còn lại trong file theo ý muốn như hình dưới đây:

*
*
*
*
*
*
*
*

Ký tự x đại diện cho việc bạn sẽ đánh dấu ký hiệu cho việc Sheet nào được chọn để ẩn/ hiện.

Công thức =IF(A3=””, “”, IF(B3=”x”, “”, “x”))

Trong đó:

IF(A3=””, “”, nghĩa là nếu giá trị trong ô A3 là rỗng (không có tên Sheet) thì trả về giá trị rỗng
IF(B3=”x”, “”, “x”) nghĩa là nếu giá trị trong ô B3 (được đánh dấu x cho việc Ẩn Sheet) thì giá trị trong cột Hiện sẽ là rỗng. Ngược lại nếu không đánh dấu x vào ô Ẩn thì sẽ trả về giá trị x tại ô Hiện

Riêng Sheet MENU chúng ta không đặt công thức mà đặt thẳng giá trị x vào để thể hiện sheet đó luôn Hiện

Bước 4: Viết code ẩn/hiện Sheet

Tiếp theo bạn tạo 1 Sub có tên An
Hien_Sheet như sau:


Nội dung của đoạn code trên là (những dòng lệnh chính):

Dòng 2 và 3: Tạo ra 1 biến là lr giúp xác định dòng cuối có dữ liệu trong cột A của Sheet có tên là MENU (Giúp xác định giới hạn các Sheet cần thực hiện)Dòng 5: Tạo ra biến sodong để dùng cho vòng lặp
Dòng 7: Thực hiện vòng lặp xét các Sheet trong cột A, bắt đầu từ dòng 2 tới dòng cuối có dữ liệu
Dòng 9: Khi bắt đầu vòng lặp, thực hiện việc hiện Sheet trước (coi như Sheet đó luôn được hiện)Dòng 11: Sau đó mới xét đến điều kiện là Sheet đó có đang ẩn không bằng việc kiểm tra giá trị trong cột B có phải là ký tự x không
Dòng 12: Nếu đúng, thực hiện lệnh ẩn Sheet theo tên Sheet là tên trong cột A tại dòng kiểm tra
Dòng 16: Sau khi hoàn thành hết vòng lặp, thực hiện kích hoạt Sheet MENU để không chọn tới Sheet nào khác (có thể xảy ra khi ẩn / hiện Sheet)

Các bạn có thể tìm hiểu thêm về cấu trúc IF, vòng lặp For trong VBA tại bài viết:

Hướng dẫn cách viết cấu trúc IF THEN ELSE trong VBA Excel

Hướng dẫn sử dụng vòng lặp For.. Next trong VBA

Sau khi viết xong Sub trên, chúng ta gán Sub vào trong nút lệnh Ẩn/hiện Sheet.

Kết luận

Như vậy chúng ta đã hoàn thành được MENU điều khiển việc ẩn, hiện Sheet rồi. Bạn chỉ việc thực hiện thao tác chọn Sheet muốn Ẩn, sau đó bấm nút Ẩn/hiện Sheet và xem kết quả nhé.

Muốn hiện Sheet đang ẩn, bạn chỉ cần xóa ký tự x trong cột Ẩn với Sheet đó rồi bấm nút Ẩn/hiện Sheet một lần nữa.

Ngoài ra bạn có thể áp dụng LẬP TRÌNH SỰ KIỆN vào trong sheet MENU để mỗi khi đánh dấu x hoặc bỏ dấu x vào ô Ẩn của Sheet bất kỳ, ngay lập tức Sheet đó sẽ ẩn/hiện mà không cần phải bấm nút Ẩn/hiện Sheet. Các bạn tham khảo cách lập trình sự kiện cho Sheet tại bài viết sau đây và thực hành theo nhé:

Nếu bạn gặp một Wowkbook, trong đó có nhiều dữ liệu liên kết đến một Sheets, nhưng mà bạn chẳng thể nào tìm được Sheets đó trong Workbook. Thì có lẽ Sheets đó đã được người tạo ẩn hoàn toàn khỏi bảng tính Excel.

Sheets ẩn hoàn toàn trong Workbook là Sheets bị ẩn đi và cũng không thể làm hiện lại bằng cách mà vẫn thường hay làm là Unhide. Vì cũng chẳng tìm thấy cái Sheets đó trong bảng chọn khi Unhide. Vậy làm sao để ẩn hoàn toàn Sheets khỏi Workbook và làm sao hiện lại ? thì bài viết này sẽ giúp bạn thực hiện.

Cách làm ẩn hoàn toàn và hiện Sheet trong Workbook

Với cách ẩn hiện Sheets thông thường vẫn hay làm là chuột phải vào Sheet và Hide hoặc Unhide. Nhưng với ẩn hoàn toàn và hiện một Sheets bạn chỉ có thể thực hiện trong VBAProject.


Ví dụ một Workbook có 5 Sheets.

*

Vào VBA, bạn chọn vào một Sheet bất kỳ muốn ẩn và trong Properties, bạn tùy chọn thuộc tính Visible thành –xl
Sheet
Very
Hiden
.


*

Tiếp theo, bạn hãy quay trở lại bảng tính để kiếm tra. Thì Sheets đó đã bị ẩn đi và khi chuột phải vào Sheet thì Unhide đã bị khóa. Có nghĩa là 5 Sheets ban đầu, mình đã ẩn1 Sheets bằng xl
Sheet
Very
Hiden thì Sheet đó đã bị ẩn hoàn toàn và với cách ẩn hiện Sheets thông thường sẽ không thấy được.

*

Hỏi Vậy khi đã ẩn hoàn toàn thì làm sao có thể làm Sheets đó hiện lại được?

Để hiện Sheets ẩn hoàn toàn thì bạn cần chuyển thuộc tính Visible của Sheets đó thành xl
Sheet
Visible
là được.

Nhưng ẩn hoàn toàn và hiện một Sheets thì có vẻ phải thực hiện nhiều thao tác quá?

Nếu vậy, bạn hãy sử dụng thêm các hàm VBA có chức năng ẩn hiện Sheets như sau:

Cách ẩn hoàn toàn và hiện Sheet bằng VBA Excel

Với mỗi thuộc tính của một đối tượng trong VBA bạn có thể gán giá trị được. Vì vậy để ẩn hay hiện một Work
Sheets bạn chỉ cần tạo một số Macro trong Module và gắn thuộc tính Visible của Work
Sheets với các giá trị:

xl
Sheet
Visible: hiện.xl
Sheet
Hiden: ẩn.xl
Sheet
Very
Hiden: ẩn hoàn toàn.#1 Ẩn hoàn toàn Sheet hiện hành

Bạn có thể sử dụng hàm sau:

Sub Very
Hidden
Active
Sheet()Active
Sheet.Visible = xl
Sheet
Very
Hidden
End Sub
Hoăc bạn có thể chọn tất cả Work
Sheets và chạy hàm sau để ẩn nhiều Sheets một lần.

Sub Very
Hidden
Selected
Sheets()Dim wks As Worksheet
On Error Go
To Err
For Each wks In Active
Window.Selected
Sheetswks.Visible = xl
Sheet
Very
Hidden
Next
Exit Sub
Err:Msg
Box "Work
Book phai co it nhat một Work
Sheets hien hanh."End Sub
Code language: PHP (php)Lưu ý Không thể ẩn tất cả các Sheet, nếu chạy hàm trên Sheets hiện hành sẽ được giữ lại.

#2 Hiện Sheet đã ẩn hoàn toàn

Nếu bạn chỉ cần hiện Sheets ẩn hoàn toàn thì sử dụng hàm:

Sub Unhide
Very
Hidden
Sheets()Dim wks As Worksheet
For Each wks In Worksheets
If wks.Visible = xl
Sheet
Very
Hidden Then wks.Visible = xl
Sheet
Visible
Next
End Sub
Code language: PHP (php)Hoặc hiện tất cả các Sheets đã ẩn bằng hàm:

Sub Unhide
All
Sheets()Dim wks As Worksheet
For Each wks In Active
Workbook.Worksheetswks.Visible = xl
Sheet
Visible
Next wks
End Sub
Code language: PHP (php)Trường hợp
Nếu bạn muốn tạo mật khẩu bảo vệ cho các Macro hiện Sheets, bạn có thể thực theo các bước sau:


*

Tạo sự kiện cho nút nhấn và thêm 1 hàm điều kiện IF kiểm tra 1 mật khẩu mà bạn tự đặt.

Private Sub btn
Kiemtra_Click()If txt
Matkhau.Text = "mk0001" Thenbool = True
Elsebool = False
End If
Unload Me
End Sub
Code language: PHP (php)Tại Module mà bạn đã tạo ở trên, hãy thêm vào một biến dữ liệu toàn cục. Biến này sẽ có giá trị True/ False.

Public bool As Boolean
Code language: PHP (php)Sau đó bạn hãy gọi User
Form từ các hàm hiện Sheets ẩn trong Module. Và kiếm tra biến bool là True (mật khẩu đúng) > hiện Sheets hoặc False (mật khẩu sai) thì không hiện.

Sub Unhide
All
Sheets()User
Form1.Show
If bool = True Then
Dim wks As Worksheet
For Each wks In Active
Workbook.Worksheetswks.Visible = xl
Sheet
Visible
Next wks
Else
Msg
Box "Sai Mat Khau"End If
End Sub
Code language: PHP (php)Mỗi khi chạy Macro thì User
Form sẽ hiện lên và nếu nhập đúng mật khẩu thì hàm hiện Sheets ẩn mới thực thi. Nếu sai, sẽ báo ra Msg
Box.

Xem thêm: Không Vào Được Facebook 5/2016 Phải Làm Sao, Không Vào Được Facebook 5/6/2016

Như vậy, với cách ẩn hoàn toàn Sheets mình đã giới thiệu như trên, hy vọng bạn có thể áp dụng để ẩn các Sheets có dữ liệu mà bạn không muốn hiện trong Workbook do bạn tạo. Cũng như làm hiện các Work
Sheet được ẩn hoàn toàn.