Làm sao để unhide nhiều sheet một lần?

Chia sẻ bởi:hands
★★★★★
Quảng cáo

Các pác cho em hỏi, khi ta muốn ẩn nhiều sheet một lúc thì dẽ rồi nhưng khi muốn bung ra thì phải làm từng sheet. Như vậy rất mất công mà còn bị ức chế. Vậy có cách nào cho phép bung nhiều sheet một lúc k??

Thì dùng VBA thôi. Nhưng thực chất VBA cũng Unhide từng Sheet mà thôi nhưng nó tự động nên nhanh thôi.
Bạn mở 1 file Excel, bấm Alt + F11 đễ mở cửa sổ VBE… vào menu InsertModule đễ add 1 module rồi copy code của Salam, paste vào cửa sổ này… Đóng cửa sổ VBE lại…
Trên bảng tính bấm Atl + F8, chọn tên Marco và OK là nó chạy liền…

Sub HideSheet()
   On Error Resume Next
   For Each sh In ThisWorkbook.Worksheets
       sh.Visible = Fasle
   Next sh
End Sub

Bạn dùng thử code này xem.

Dear All

Sao mình dùng code này lại báo lỗi sh.Visible = Fasle tại Sheet 3

Sub HideSheet()
   For Each sh In ThisWorkbook.Worksheets
       sh.Visible = Fasle
   Next sh
End Sub

Thân

Vấn đề này cũng là vấn đề các bạn thường đặt ra.

Để thực hiện chúng ta có thể mô tả quá trình Hide như sau:
_ Hiện các worksheet bạn cần.
_ Dấu các worksheet còn lại.

Function IsItInArray(sValueToFind As Variant, InputArray As Variant) As Boolean
    IsItInArray = Not IsError(Application.Match(sValueToFind, InputArray, 0))
End Function

Để thực hiện được điều này tôi có dùng hàm IsItInArray.
Hàm này sẽ kiểm tra một chuổi có trong một mảng hay không.
Ví dụ:

Sub Test()
    Dim x As Variant
    x = Array("Hello", "Duyet", "Hien", "Luyen", "Long", "Quan")
    If IsItInArray("Long", x) Then
        MsgBox "Tồn tại"
    Else
        MsgBox "Không tồn tại"
    End If
End Sub

Và sau đó tôi dùng thủ tục sau:

Sub ViewWs(ByVal WsName As Variant)
    Dim Ws As Worksheet
    On Error Resume Next
    Application.ScreenUpdating = False
    'There is at least one worksheet visible first
    'If not, the error will be shown and this Sub is not correct
    For Each Ws In ThisWorkbook.Worksheets
        If IsItInArray(Ws.Name, WsName) Then
            Ws.Visible = xlSheetVisible
        End If
    Next
    For Each Ws In ThisWorkbook.Worksheets
        If Not IsItInArray(Ws.Name, WsName) Then
            Ws.Visible = xlSheetHidden
        End If
    Next
    Application.ScreenUpdating = True
End Sub

Hy vọng đoạn ví dụ trên có thể giúp cho các bạn.

Lê Văn Duyệt

Cái này dùng custom views trong menu view ( excel 2003 ) có lẽ là giải quyết được, bạn gửi 1 file giả định lên xem sao

Gửi bạn file ví dụ xem có đúng ý không
Nhấn alt+v+v—> chọn ToanBo —> enter

Bạn làm thế nào vậy bạn.
Xin bạn hướng dẫn thêm vì mình chưa hiểu bạn ạ.

Ví dụ 1 trường hợp đơn giản, có gì bạn mở rộng thêm
Giả sử ban đầu file có 3 sheet là 1, 2, 3.
Sẽ tạo 2 view là :
1- Chỉ nhìn thấy sheet1
2- Nhìn thấy toàn bộ các sheet

B1: Khi toàn bộ các sheet đều nhìn thấy
Nhấn alt+v+v —> nhấn add —> Nhập tên "ToanBo" trong Name —> ok
B2 : Ẩn sheet 2, 3 bằng lệnh hide
Nhấn alt+v+v —> nhấn add —> Nhập tên "An" trong Name —> ok

Bây giờ nếu muốn hiện toàn bộ sheet, bạn làm : alt +v+v —>
chọn "ToanBo" —> show (hoặc enter) sẽ thấy toàn bộ các sheet
chọn "An" —> show (hoặc enter) sẽ chỉ thấy sheet1

Có thể tạo nhiều view bằng cách trên

Quá hay.
Cảm ơn bạn rất nhiều.
Phím tắt excel 2003 mình hay phải dùng nhiều.
Giờ mình ms biết chức năng này của excel. Mà có từ bản 2003 luôn.
Bạn cho mình hỏi thêm chút.
Khi mình Add thì có mục Indude in View.
Mình chưa hiểu ý nghĩa của mục này. Có thử tích và bỏ tích thì ko thấy khác biệt.
Bạn có thể giải thích giúp mình mục đấy có ý nghĩa gì không?
Mình có đọc nhiều tài liệu excel nhưng ko thấy có phần này.
Cảm ơn bạn!

Cái này lâu quá không dùng nên chỉ nhớ mang máng là khi tạo view, nếu trong sheet có lập autofill và đang ở chế độ lọc thì lựa chọn Indude có tác dụng khi show trả lại sẽ làm hiện lên (hoặc không) dòng bị ẩn trong autofill.
Trước toàn dùng cái này kèm theo protecion windows, giờ lâu rồi nhớ không nổi.
Bạn chủ động vận dụng đi vậy nhé

[URL='www.giaiphapexcel.com/diendan/goto/post?id=721360']HungQuoc49 said:
Ví dụ 1 trường hợp đơn giản, có gì bạn mở rộng thêm
Giả sử ban đầu file có 3 sheet là 1, 2, 3.
Sẽ tạo 2 view là :
1- Chỉ nhìn thấy sheet1
2- Nhìn thấy toàn bộ các sheet

Tôi chưa hiểu bước trên, nhờ các bạn hướng dẫn rỏ hơn
Xin cám ơn

Bạn xem trong file đính kèm xem thế nào

Chức năng này ngày trước mình cũng làm nhưng nếu gửi file đi nếu muốn hiện từ sheet thì đa số bạn vẫn làm ẩn từng sheet một vì ít biết chức năng này mong sau này excel sẽ có cải tiến cho chọn hiện sheet 1 lượt hoặc muốn hiện sheet nào hiện sheet đó, phiên bản 2007 về sau thì vào view –> custom views để tim hiểu thêm

Cccm update lại code VBA

1. Unhide tất cả sheet

Sub UnhideSheet()
    On Error Resume Next
    Application.ScreenUpdating = False
    Dim Sh As Worksheet
    For Each Sh In ActiveWorkbook.Sheets
        If Not Sh.Visible = xlSheetVisible Then Sh.Visible = xlSheetVisible
    Next
    Application.ScreenUpdating = True
End Sub

2. Unhide sheet mình chọn

Sub UnhideSomeSheets()
   Dim sSheetName As String
   Dim sMessage As String
   Dim Msgres As VbMsgBoxResult

For Each wsSheet In ActiveWorkbook.Worksheets

If wsSheet.Visible = xlSheetHidden Then
           sSheetName = wsSheet.Name
           sMessage = "Ban co muon Unhide sheet nay khong?" & vbNewLine & sSheetName
           Msgres = MsgBox(sMessage, vbYesNo)
           If Msgres = vbYes Then wsSheet.Visible = xlSheetVisible
       End If

Next wsSheet

End Sub

Thân,

Có cách nào hiện listbox danh sách sheet bị ẩn để mình chọn không bạn?

Bạn tham khảo file này nhé, nguồn từ Webkynang
www.giaiphapexcel.com/diendan/threads/l%C3%A0m-sao-%C4%91%E1%BB%83-unhide-nhi%E1%BB%81u-sheet-m%E1%BB%99t-l%E1%BA%A7n.8484/page-2

Khoá học Trưởng phòng nhân sự
Khóa học SprinGO phù hợp

Khoá học Trưởng phòng nhân sự

Nguồn nhân lực là một trong Tứ trụ kinh doanh của doanh nghiệp, có tác động tới sự tồn tại và phát triển bền...

Xem khóa học
★★★★★ 5 ★ 1 👤 0 ▥ 0
Quảng cáo

Bạn nên đọc

Leave a Reply

Your email address will not be published. Required fields are marked *

Quảng cáo

Cũ vẫn chất

Xem thêm