Ẩn sheets theo danh sách ? (1 người xem)

Liên hệ QC

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

Hoàng Nhật Phương

Thành viên gắn bó
Tham gia
5/11/15
Bài viết
1,895
Được thích
1,219
Xin chào tất cả các bạn!
Mặc dầu đêm cũng đã khuya nhưng Oanh Thơ không ngủ được vì đang nghĩ về vấn đề này,nên viết lên đây nhờ các bạn cho giải pháp ạ
Như tiêu đề O.Thơ đã nêu và cụ thể như sau ạ:
Trong file của O.Thơ có rất nhiều sheet khoảng gần 100sheet nhưng trong sheet1 O.Thơ đã liệt kê một list danh sách tên của các mà O.Thơ muốn ẩn đi, tên của các sheet này nằm trong vùng A2:A10
Xin các bạn giúp đoạn code để thực hiện được vấn đề O.Thơ nêu trên ạ

Trân trọng và cảm ơn các bạn rất nhiều
Oanh Thơ
 
Bạn gõ tên các sheet muôn ẩn vào vùng [A2:A7] của Sheet_goc nha
 

File đính kèm

Upvote 0
mới ra tay có chút xíu là được các vị anh hùng chiếu cố liền , thích nhé anh Tiêu Phong ! !$@!!!$@!!
 
Upvote 0
Ô A2=a, ô A3=a nửa thì thế nào vậy bác?

Trong Code sửa lại đoạn =1 thành >0 được không anh
Sao lại dùng tới 2 vòng lặp vậy đồng chí???--=0--=0--=0

Chời ơi ... em nghĩ sao thì viết liền vậy ah ... hổng dám đâu nghe .. nhưng thực tình đề bài có yêu cầu là chỉ được phép dùng 1 vòng

lặp For đâu anh ...:-=:-=
 
Lần chỉnh sửa cuối:
Upvote 0
Ờ thì tớ nói vậy thôi...Chứ có bắt bớ em đâu...

Ý là chỉ cần 1 vòng lặp thôi, 2 vòng mà như nhau thì nó dư & chậm hơn thôi chứ có gì đâu...--=0--=0--=0

Cái chính là khi xóa dữ liệu ở vùng A2:A7 thì em muốn các Sheet nó lại hiện lên.

Em chưa nghĩ ra cách nào nên phải dùng thêm 1 vòng For nua, nếu anh đã có hướng giải quyết thì viết luôn Code ra đi cho em xem với
 
Lần chỉnh sửa cuối:
Upvote 0
Thì em thử bỏ đi 1 vòng lặp, rồi xóa dữ liệu trong vùng. Các sheet nó vẫn lại hiện lên mà... thử đi

Bỏ đi vòng lặp. chỉ còn vầy thôi

Mã:
For Each sh In ThisWorkbook.Worksheets
        sh.Visible = True
    If sh.Name <> "Sheet_goc" And WorksheetFunction.CountIf([A2:A7], sh.Name) = 1 Then
        sh.Visible = False
    End If
Next sh

Được rồi anh. Có cách nào mà không cần dùng tới Worksheetfunction.countif không anh...Lúc đầu em dịnh làm theo hướng là:
Mã:
....
For i = 2 to 7
  Sheets(Cells(i,2)).visible = False
Next i
...

Nhưng không có được --=0--=0--=0
 
Upvote 0
Thì như vầy xem

Mã:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long, sh
On Error GoTo Thoat
If Not Intersect(Target, [A2:A7]) Is Nothing Then
    For Each sh In ThisWorkbook.Worksheets
        sh.Visible = True
        If sh.Name = Target.Value Then sh.Visible = False
    Next sh
End If
Thoat:
End Sub

Có gì đó sai sai rồi đại ca ơi . Anh thử Test lại mà coi ...
 
Upvote 0
Nếu không dùng hàm đếm, không sử dụng 2 vòng lặp ca này coi bộ khó à nha.
 
Upvote 0
Không ngờ một câu hỏi đơn giản như vậy mà có hơn chục bài trả lời.
Theo tôi trong trường hợp này mà cố gắng chỉ sử dụng 1 vòng lặp, không dùng cái này, không dùng cái kia là không đáng. Vì nếu không xem code mà chỉ chạy thử thì dám chắc không ai phân biệt được cái nào dùng 1 vòng lặp, cái nào dùng 2 vòng lặp. Vậy thì giới hạn 1 vòng lặp để làm gì? Trong khi dùng 2 vòng lặp code rõ ràng, dễ hiểu hơn.

Cũng xin nói thêm, về hiệu quả thì dùng 1 vòng lặp chưa chắc đã hơn dùng 2 vòng lặp. Dùng một vòng lặp nhưng trong đó thực hiện 2 câu lệnh thì cũng giống như dùng 2 vòng lặp trong mỗi vòng lặp thực hiện 1 câu lệnh mà thôi.
 
Upvote 0
Không ngờ một câu hỏi đơn giản như vậy mà có hơn chục bài trả lời..
Đâu có liên quan đến vấn đề dễ - khó ở đây mà hạn chế số bài trả lời đâu. Theo em thì những bài trả lời có liên quan đến nội dung

Topic, phục vụ được cho yêu cầu của tác giả hoặc phần nào hữu ích đối với các thành viên mới thì ta chẳng có lí do gì phải ngại mà

không tiếp tục trả lời cả. Hơn nữa có thể là dễ đối với anh nhưng lại là lạ đối với các thành viên khác

Theo tôi trong trường hợp này mà cố gắng chỉ sử dụng 1 vòng lặp, không dùng cái này, không dùng cái kia là không đáng.

Kiến thức của mỗi người không giống nhau, mỗi người 1 ý tưởng 1 quan điểm vì vậy việc đưa ra nhiều cách giải sẽ giúp trao

đổi kiến thức giữa những người tham gia trả lời với nhau. Như vậy thông qua trao đổi người này bổ sung những kiến thức còn thiếu

xót cho người kia và ngược lại. Hơn nữa 1 bài tập biết đâu lại có nhiều cách giải và càng đào sâu biết đâu lại tìm ra cách tối ưu

nhất...và cái quan trọng là cáigì mình không biết thì mình đi hỏi mọi người nếu mọi người cũng không giải pháp thì chí ít mình

cũng biết là bài toán đã hết cách còn hơn là cứ ôm mãi lấy thắc mắc ---> như thế chẳng thoải mái chút nào
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom