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 –xlSheetVeryHiden.
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 xlSheetVeryHiden 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 xlSheetVisible 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 WorkSheets bạn chỉ cần tạo một số Macro trong Module và gắn thuộc tính Visible của WorkSheets với các giá trị:
- xlSheetVisible: hiện.
- xlSheetHiden: ẩn.
- xlSheetVeryHiden: ẩ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 VeryHiddenActiveSheet()
ActiveSheet.Visible = xlSheetVeryHidden
End Sub
Hoăc bạn có thể chọn tất cả WorkSheets và chạy hàm sau để ẩn nhiều Sheets một lần.
Sub VeryHiddenSelectedSheets()
Dim wks As Worksheet
On Error GoTo Err
For Each wks In ActiveWindow.SelectedSheets
wks.Visible = xlSheetVeryHidden
Next
Exit Sub
Err:
MsgBox "WorkBook phai co it nhat một WorkSheets 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 UnhideVeryHiddenSheets()
Dim wks As Worksheet
For Each wks In Worksheets
If wks.Visible = xlSheetVeryHidden Then wks.Visible = xlSheetVisible
Next
End Sub
Code language: PHP (php)
Hoặc hiện tất cả các Sheets đã ẩn bằng hàm:
Sub UnhideAllSheets()
Dim wks As Worksheet
For Each wks In ActiveWorkbook.Worksheets
wks.Visible = xlSheetVisible
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 mật khẩu bảo vệ mã lệnh VBA. Lưu ý là nếu bạn đặt mật khẩu thì User vẫn có thể chạy Macro được vì vậy bạn có thể áp dụng tiếp các bước sau.
- Tạo UserForm với một TextBox và một Nút nhấn (Command Button).
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 btnKiemtra_Click()
If txtMatkhau.Text = "mk0001" Then
bool = True
Else
bool = 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 UserForm 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 UnhideAllSheets()
UserForm1.Show
If bool = True Then
Dim wks As Worksheet
For Each wks In ActiveWorkbook.Worksheets
wks.Visible = xlSheetVisible
Next wks
Else
MsgBox "Sai Mat Khau"
End If
End Sub
Code language: PHP (php)
Mỗi khi chạy Macro thì UserForm 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 MsgBox.
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 WorkSheet được ẩn hoàn toàn.
Chúc bạn thành công!