Làm sao ẩn hay hiện 1 nhóm sheet (1 người xem)

  • Thread starter Thread starter LienDong
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

LienDong

Thành viên thường trực
Tham gia
22/11/12
Bài viết
218
Được thích
46
Nghề nghiệp
Ai nói đúng thì làm!
Chào các bạn, tôi có tìm trên diễn đàn code ẩn hiện các sheet nhưng kg thấy chuyên đề nào phù hợp nên tôi nhờ các bạn giúp đỡ
Trong 1 file của tôi có rất nhiều Sheet và tôi chia ra 2 loại nhóm sheet như sau:
Nhóm 1: bao gồm các sheet 3, 7, 8...( nhóm này số lượng sheet không cố định có thể được tạo các sheet mới, tạm thời tô màu xanh cho dễ nhận diện)
Nhóm 2: bao gồm các sheet 2, 4, 5, 6 ( nhóm này có số lượng sheet cố định, tạm thời tô màu đỏ cho dễ nhận diện)
Ngoài ra còn có Sheet "Main" và trên sheet này có chứa checkbox10
Nhờ các bạn giúp viết code sau:
Khi tôi đánh dấu check vào checkbox10 : thì sẽ show các sheet của nhóm 1 và sheet Main, các sheet nhóm 2 sẽ bị ẩn đi
Và khi tôi bỏ dấu check ở checkbox10 : thì sẽ show các sheet của nhóm 2 và sheet Main, các sheet nhóm 1 sẽ bị ẩn đi
Hoặc có thể các bạn làm sao được theo ý trên

Mong sự giúp đỡ của các bạn, tôi làm hoài vẫn chưa được
 

File đính kèm

Tôi không mở được file của bạn, giải pháp: Sắp xếp theo thứ tự của nhóm, ví dụ sheet đầu là Main, tới nhóm 1, nhóm 2, ... Dùng code sự kiện hoặc code cho CheckBox: Chạy vòng lặp từ 2 đến tổng số sheet, nếu nằm trong nhóm 1 thì Hide, ...
 
Upvote 0
Cảm ơn bạn tôi không biết nhiều về viết code nên khg thể làm theo hướng dẫn của bạn được, bạn có thể giúp mình được không!
File tôi thấy vẫn tải bình thường, không biết các bạn khác có tải được không nhỉ
 
Upvote 0
Cảm ơn bạn tôi không biết nhiều về viết code nên khg thể làm theo hướng dẫn của bạn được, bạn có thể giúp mình được không!
File tôi thấy vẫn tải bình thường, không biết các bạn khác có tải được không nhỉ
Hình như file có virus, tôi tắt tường lửa mới tải file được. Code tôi sửa lại trong file:
Mã:
Private Sub CheckBox1_Click()
    Dim Sh As Integer
    For Sh = 2 To ThisWorkbook.Worksheets.Count
        If Sh <= 5 Then
            Sheets(Sh).Visible = CheckBox1.Value
        Else
            Sheets(Sh).Visible = Not CheckBox1.Value
        End If
    Next
End Sub
Trong đó tôi sắp xếp Main đứng đầu, màu xanh 4 sheet đứng thứ (nên tôi để điều kiện là Sh<=5), và nhóm màu đỏ để sau.
 

File đính kèm

Upvote 0
Có thể rút ngắn IF, và code rút ngắn gọn lại:
Mã:
Private Sub CheckBox1_Click()
    Dim Sh As Integer
    For Sh = 2 To ThisWorkbook.Worksheets.Count
        Sheets(Sh).Visible = IIf(Sh <= 5, CheckBox1.Value, Not CheckBox1.Value)
    Next
End Sub
 
Upvote 0
Hình như file có virus, tôi tắt tường lửa mới tải file được. Code tôi sửa lại trong file:
Mã:
Private Sub CheckBox1_Click()
    Dim Sh As Integer
    For Sh = 2 To ThisWorkbook.Worksheets.Count
        If Sh <= 5 Then
            Sheets(Sh).Visible = CheckBox1.Value
        Else
            Sheets(Sh).Visible = Not CheckBox1.Value
        End If
    Next
End Sub
Trong đó tôi sắp xếp Main đứng đầu, màu xanh 4 sheet đứng thứ (nên tôi để điều kiện là Sh<=5), và nhóm màu đỏ để sau.
Cảm ơn bạn đã hỗ trợ, không biết còn cách nào khác không vì tôi có dùng 1 code khác để Sort các sheet theo thứ tự, nên không thể sử dụng code của bạn được
Đây là code sort của anh NDU mà tôi sưu tầm được
Sub SortSheet(ByVal Order As Boolean)
Dim i As Long, J As Long
Application.ScreenUpdating = False
For i = 1 To Sheets.Count - 1
For J = i + 1 To Sheets.Count
If Sheets(IIf(Order, J, i)).name < Sheets(IIf(Order, i, J)).name Then
Sheets(J).Move before:=Sheets(i)
End If
Next J
Next i
Application.ScreenUpdating = True
End Sub


Sub MainN()
Dim lAsk As Long
lAsk = MsgBox("Ban muon sort tang hay giam dan?" & vbLf & _
"Bam 'YES' de sort tang dan" & vbLf & _
"Bam 'NO' de sort giam dan", 4)
SortSheet (lAsk = 6)
End Sub
 
Upvote 0
Gợi ý: Phải dùng cái gì đó để đánh dấu đâu là nhóm 1, đâu là nhóm 2, sau đó mới tính đến chuyện viết code
 
Upvote 0
Cảm ơn bạn đã hỗ trợ, không biết còn cách nào khác không vì tôi có dùng 1 code khác để Sort các sheet theo thứ tự, nên không thể sử dụng code của bạn được
Dựa vào số màu đã tô trên sheet:
Mã:
Private Sub CheckBox1_Click()
    Dim Sh As Worksheet
    For Each Sh In ThisWorkbook.Worksheets
        If Sh.Name <> "Main" Then
            'MsgBox Sh.Tab.Color
            Sh.Visible = IIf(Sh.Tab.Color = 255 Or _
            Sh.Tab.Color = 49407, CheckBox1.Value, Not CheckBox1.Value)
        End If
    Next Sh
End Sub
'MsgBox Sh.Tab.Color sẽ cho bạn số màu của sheet đã tô. Nếu nhiều màu thì đặt điều kiện riêng cũng được.
 

File đính kèm

Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom