Làm sao để unhide nhiều sheet một lần?
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 SubThâ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 —> enterBạ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 sheetTô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ự
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