Unhide nhiều sheet cùng lúc

Liên hệ QC

Exceluser

Thành viên mới
Tham gia
23/10/09
Bài viết
15
Được thích
2
Dear cả nhà,

1) Em có 1 file excel nhiều sheet. Đang dùng macro để click 1 phát là hide và unhide 1 số sheet. Vấn đề nảy sinh là hide thì rất nhanh, sheet(array) là xong, nhưng không unhide cùng 1 lúc như thế được mà phải visible = true từng sheet một, rất cơ bắp thiếu trí tuệ.

Mọi người giải đáp thắc mắc giúp với.

2) Em còn có 2 file rất to và nặng, muốn nhập vào nhau. Sau đó tạo 2 nút để click nút này thì hiện ra 1 nửa số sheets, hide những cái còn lại. Click nút kia thì ngược lại. Có ai có cao kiến gì để không phải tạo thành 1 file siêu nặng như thế không?

Em đa tạ,
 
Câu 1 bạn có thể dùng đoạn code sau
PHP:
Sub hiensheet()
    For i = 1 To Sheets.Count
    Sheets(i).Visible = True
    Next
End Sub
 
Upvote 0
Sau khi thực hiện được yêu cầu thứ nhất rồi thì đây là code để bạn thực hiện yêu cầu thứ 2:
PHP:
Sub Hide_UnHide_Sheet()
    For i = 2 To Sheets.Count
        Sheets(i).Visible = Not (Sheets(i).Visible)
    Next
End Sub
(Ở đây, mình giả sử Sheets(1) là trang chính của Workbook, Sheet này luôn ở trạng thái Unhide)
 
Upvote 0
Ôi,

2 cách đều thật là lợi hại. Như vậy thì chỉ cần tạo 1 nút thôi là được. Click 1 phát là nó luân phiên hiện ra.

Vấn đề là em cần 2 nút (thủ công hơn chút). Ví dụ: click nút A thì nó unhide sheet 2 - 10 va hide sheet 11 - 20. Click nut B thì, ngược lại, hide sheet 2 - 10 và unhide sheet 11 - 20.

(nếu làm theo cách trên thì nó sẽ đơn thuần đếm các sheet từ 2 đến hết, không quan tâm sheet nào của nút nào)

Em đa tạ,
 
Upvote 0
Theo yêu cầu của bạn :
PHP:
Sub AnSheet()
     For i = 2 To 10     
          Sheets(i).Visible=True
     Next
     For i = 11 To 20
          Sheets(i).Visible=False
     Next
End Sub

Làm tương tự như code HienSheet
 
Upvote 0
File cho bạn.

Ôi,

2 cách đều thật là lợi hại. Như vậy thì chỉ cần tạo 1 nút thôi là được. Click 1 phát là nó luân phiên hiện ra.

Vấn đề là em cần 2 nút (thủ công hơn chút). Ví dụ: click nút A thì nó unhide sheet 2 - 10 va hide sheet 11 - 20. Click nut B thì, ngược lại, hide sheet 2 - 10 và unhide sheet 11 - 20.

(nếu làm theo cách trên thì nó sẽ đơn thuần đếm các sheet từ 2 đến hết, không quan tâm sheet nào của nút nào)

Em đa tạ,
Tôi chỉ cần một nút thôi nhưng thỏa mãn được các yêu cầu của bạn. 2 nút rườm rà hơn, không biết ý bạn thế nào nếu bạn muốn 2 nút thì gán code vào thôi tôi đang để 2 code riêng biệt đó. Bạn xem file nhé.
 
Lần chỉnh sửa cuối:
Upvote 0
Đầu tiên bạn cho ẩn các sheets cần ẩn (từ sheet 2 đến sheet 10 hoặc từ sheet 11 đến sheet 20) sau đó dùng code của bạn nghiaphuc ở bài #3 là được.
 
Upvote 0
Dear cả nhà,

1) Em có 1 file excel nhiều sheet. Đang dùng macro để click 1 phát là hide và unhide 1 số sheet. Vấn đề nảy sinh là hide thì rất nhanh, sheet(array) là xong, nhưng không unhide cùng 1 lúc như thế được mà phải visible = true từng sheet một, rất cơ bắp thiếu trí tuệ.

Mọi người giải đáp thắc mắc giúp với.

2) Em còn có 2 file rất to và nặng, muốn nhập vào nhau. Sau đó tạo 2 nút để click nút này thì hiện ra 1 nửa số sheets, hide những cái còn lại. Click nút kia thì ngược lại. Có ai có cao kiến gì để không phải tạo thành 1 file siêu nặng như thế không?

Em đa tạ,
Làm vầy đây:
PHP:
Private Sub Cmd_Click()
  Dim Check As Boolean, i As Long
  Application.ScreenUpdating = False
  Check = (Cmd.Caption = "Hide: 2 to 10")
  For i = 2 To 20
    Sheets(i).Visible = IIf(Check, i > 10, i < 11)
  Next i
  Cmd.Caption = IIf(Check, "Hide: 11 to 20", "Hide: 2 to 10")
  Application.ScreenUpdating = True
End Sub
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom