Giúp đỡ code ẩn/hiện các sheet trong chỉ 1 button (2 người xem)

  • Thread starter Thread starter phuc2oi
  • Ngày gửi Ngày gửi

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

phuc2oi

Thành viên mới
Tham gia
7/1/13
Bài viết
23
Được thích
1
E làm theo hướng dẫn ở bài viết này: http://www.giaiphapexcel.com/forum/showthread.php?37055-Tạo-nút-nhấn-để-link-đến-các-sheet
Mục đích là tạo 1 button với 2 chức năng: Ẩn hết các sheet ngoại trừ sheet đang làm việc/Hiện hết các sheet
Code của tác giả là:
PHP:
Sub ShowAllShs()
  Dim Sh As Worksheet
  Application.ScreenUpdating = False
  On Error Resume Next
  With Sheet1.Shapes("All").TextFrame.Characters
    For Each Sh In ThisWorkbook.Worksheets
      If Sh.Name <> "Trang ch" & ChrW(7911) Then
        Sh.Visible = .Text = "SHOW ALL"
      End If
    Next
    .Text = IIf(.Text = "SHOW ALL", "HIDE ALL", "SHOW ALL")
  End With
  Application.ScreenUpdating = True
End Sub
Link file mẫu đây ạ: http://www.giaiphapexcel.com/forum/attachment.php?attachmentid=62010&d=1303894600
Bây h e muốn sửa lại để dùng cho file của mình thì phải sửa ntn ạ. E có 1 file với sheet chính tên là "Menu", còn các sheet khác thì như D110, D120, D130,...
Thank mọi người
 
Lần chỉnh sửa cuối:
Thì bạn bỏ cái "Trang ch" & ChrW(7911) và thêm chữ "Menu" vào!
 
Upvote 0
E làm theo hướng dẫn ở bài viết này: http://www.giaiphapexcel.com/forum/showthread.php?37055-Tạo-nút-nhấn-để-link-đến-các-sheet
Mục đích là tạo 1 button với 2 chức năng: Ẩn hết các sheet ngoại trừ sheet đang làm việc/Hiện hết các sheet
Code của tác giả là:
PHP:
Sub ShowAllShs()
  Dim Sh As Worksheet
  Application.ScreenUpdating = False
  On Error Resume Next
  With Sheet1.Shapes("All").TextFrame.Characters
    For Each Sh In ThisWorkbook.Worksheets
      If Sh.Name <> "Trang ch" & ChrW(7911) Then
        Sh.Visible = .Text = "SHOW ALL"
      End If
    Next
    .Text = IIf(.Text = "SHOW ALL", "HIDE ALL", "SHOW ALL")
  End With
  Application.ScreenUpdating = True
End Sub
Link file mẫu đây ạ: http://www.giaiphapexcel.com/forum/attachment.php?attachmentid=62010&d=1303894600
Bây h e muốn sửa lại để dùng cho file của mình thì phải sửa ntn ạ. E có 1 file với sheet chính tên là "Menu", còn các sheet khác thì như D110, D120, D130,...
Thank mọi người
Bạn xem file. Bài này có thể không cần xài macro đâu
 

File đính kèm

Upvote 0
E thay rồi nhưng k chạy dc bác ơi :(

Bạn đừng có sửa gì cả (vì nếu sửa cái làm sẵn thì phải sửa rất nhiều)
Cứ tạo 1 file như ý của bạn và đúng theo những gì người ta hướng dẫn là được rồi (chỉ lưu ý chổ nào liên quan đến "Trang chủ" thì sửa thành "Menu")
Thế thôi
 
Upvote 0
Bạn đừng có sửa gì cả (vì nếu sửa cái làm sẵn thì phải sửa rất nhiều)
Cứ tạo 1 file như ý của bạn và đúng theo những gì người ta hướng dẫn là được rồi (chỉ lưu ý chổ nào liên quan đến "Trang chủ" thì sửa thành "Menu")
Thế thôi
E có làm j đâu bác @@
E tạo 1 file Excel với 3 sheet là "Menu", "D110", "D120". Rồi tạo 1 button với code là:
PHP:
Sub ShowAllShs()
  Dim Sh As Worksheet
  Application.ScreenUpdating = False
  On Error Resume Next
  With Sheet1.Shapes("All").TextFrame.Characters
    For Each Sh In ThisWorkbook.Worksheets
      If Sh.Name <> "Menu" Then
        Sh.Visible = .Text = "SHOW ALL"
      End If
    Next
    .Text = IIf(.Text = "SHOW ALL", "HIDE ALL", "SHOW ALL")
  End With
  Application.ScreenUpdating = True
End Sub

Code sai ở đâu mà e k chạy dc. Chứ e cũng thay đổi j đâu, sửa "Trang chủ" thành "Menu" rồi mà bác
 
Upvote 0
E có làm j đâu bác @@
E tạo 1 file Excel với 3 sheet là "Menu", "D110", "D120". Rồi tạo 1 button với code là:
PHP:
Sub ShowAllShs()
  Dim Sh As Worksheet
  Application.ScreenUpdating = False
  On Error Resume Next
  With Sheet1.Shapes("All").TextFrame.Characters
    For Each Sh In ThisWorkbook.Worksheets
      If Sh.Name <> "Menu" Then
        Sh.Visible = .Text = "SHOW ALL"
      End If
    Next
    .Text = IIf(.Text = "SHOW ALL", "HIDE ALL", "SHOW ALL")
  End With
  Application.ScreenUpdating = True
End Sub

Code sai ở đâu mà e k chạy dc. Chứ e cũng thay đổi j đâu, sửa "Trang chủ" thành "Menu" rồi mà bác

Đừng đưa code lên đây, đưa file bạn đang làm lên đây mới biết sai chổ nào bạn à!
 
Upvote 0
File của e bác xem dùm với ạ. Xem dùm e luôn tại sao e ấn bút "D110" rồi quay về "HOME" thì sheet "D110" bị ẩn
 

File đính kèm

Upvote 0
Cảm ơn bạn nhiều lắm nhé, nhưng bạn có thể chỉ cho m code sai ở chỗ nào để m có thể sửa k?
M thấy code giống ban đầu m làm mà sao lệnh của bạn chạy dc còn m thì không nhỉ @@
 
Upvote 0
Cảm ơn bạn nhiều lắm nhé, nhưng bạn có thể chỉ cho m code sai ở chỗ nào để m có thể sửa k?
M thấy code giống ban đầu m làm mà sao lệnh của bạn chạy dc còn m thì không nhỉ @@
Code lúc đầu bạn đặt Menu ở Sheet2, trong code bạn vẫn giữ là Sheet1.
Tên Shape bạn phải sửa lại là All.
Mình vẫn chưa làm được Shape ở các sheet khác, nhờ mọi người xem giúp, ví dụ ở sheet D120 chẳng hạn, tạo Shape và Assign Marco như thế nào để link đúng, chạy code toàn bị lỗi?
 
Upvote 0
Code lúc đầu bạn đặt Menu ở Sheet2, trong code bạn vẫn giữ là Sheet1.
Tên Shape bạn phải sửa lại là All.
Mình vẫn chưa làm được Shape ở các sheet khác, nhờ mọi người xem giúp, ví dụ ở sheet D120 chẳng hạn, tạo Shape và Assign Marco như thế nào để link đúng, chạy code toàn bị lỗi?
Tên shape vào đâu sửa hả bạn, mình dùng excel 2013
 
Upvote 0
Code lúc đầu bạn đặt Menu ở Sheet2, trong code bạn vẫn giữ là Sheet1.
Tên Shape bạn phải sửa lại là All.
Mình vẫn chưa làm được Shape ở các sheet khác, nhờ mọi người xem giúp, ví dụ ở sheet D120 chẳng hạn, tạo Shape và Assign Marco như thế nào để link đúng, chạy code toàn bị lỗi?

Tất các các Shape muốn Link đều Assign Macro với thằng "Link2Sh" (trong file của tác giả là Sub D100_macro)
Muốn bấm nút liên kết đến đâu, ta chọn Shape, bấm Ctrl + 1, mục Alt Text gõ tên sheet cần liên kết vào
 
Upvote 0
Tất các các Shape muốn Link đều Assign Macro với thằng "Link2Sh" (trong file của tác giả là Sub D100_macro)
Muốn bấm nút liên kết đến đâu, ta chọn Shape, bấm Ctrl + 1, mục Alt Text gõ tên sheet cần liên kết vào
Thì ra nó nằm trong câu này:
Mã:
With Sheets(.Shapes(Application.Caller).[COLOR=#FF0000][B]AlternativeText[/B][/COLOR])
Biết thêm một chút về Shape, cảm ơn Thầy.
Tên shape vào đâu sửa hả bạn, mình dùng excel 2013
Nhấp vào Shape và gõ vào Name Box (nằm trước thanh Formula, phía trên ô A1).
Còn các Shape liên kết sheet thì làm như bài #15, nếu Ctrl+1 mà không thấy Alt Text thì bạn chuột phải chọn Size and Properties > Alt Text > Sửa đúng tên sheet cần liên kết.
 
Upvote 0
Thì ra nó nằm trong câu này:
Mã:
With Sheets(.Shapes(Application.Caller).[COLOR=#FF0000][B]AlternativeText[/B][/COLOR])
Biết thêm một chút về Shape, cảm ơn Thầy.

Nói 1 biết 10 ---> Tiến bộ quá nhanh đấy!
Thảo tự mình làm 1 cái xem (chắc thừa sức)
 
Upvote 0
Vẽ 1 đống shape rồi đặt tên thủ công cũng ngán
Vậy dùng code gán tên vào cho shape trước. Giả sử đã có 1 shape tên là ALL rồi, ta cần gán tên cho shape là T01 > T12
tương ứng với 12 cái shape đã vẽ
PHP:
Sub Shape_Rename()
Dim Shape As Shape, i As Long
For Each Shape In ActiveSheet.Shapes
    If Shape.Name <> "ALL" Then
        i = i + 1
        Shape.Name = "T" & Right("00" & i, 2)
    End If
Next
End Sub
Tiếp theo là gán Alt Text cho các shape này
PHP:
Sub Add_Alt_Text_To_Shape()
Dim i, ShapeName As String
For i = 1 To 12
    ShapeName = "T" & Right("00" & i, 2)
    ActiveSheet.Shapes(ShapeName).Select
    Selection.ShapeRange.AlternativeText = "T" & Right("00" & i, 2)
Next
End Sub
Gán luôn 12 cái TextFrame cho các shape
PHP:
Sub Add_TextFrame_To_Shape()
Dim Shape As Shape, i As Long
For Each Shape In ActiveSheet.Shapes
    If Shape.Name <> "ALL" Then
        i = i + 1
        Shape.TextFrame2.TextRange.Text = _
        "T" & Right("00" & i, 2)
    End If
Next
End Sub
Viết 1 hàm để lấy Alt text của shape
PHP:
Public Function Get_Alt_Text()
Dim AltText As String
  AltText = ActiveSheet.Shapes(Application.Caller).AlternativeText
  Get_Alt_Text = AltText
End Function
Rồi gán vào sub Link_To_Sheet
PHP:
Sub Link_To_Sheet()
Dim SheetName As String
SheetName = Get_TextFrame
  With ActiveSheet
    With Sheets(SheetName)
      .Visible = True
      .Select
    End With
    .Visible = 2
  End With
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Code thật là kỳ diệu, cảm ơn a quanghai và mọi người giúp đỡ :outdv:
 
Upvote 0
Vẽ 1 đống shape rồi đặt tên thủ công cũng ngán
Vậy dùng code gán tên vào cho shape trước. Giả sử đã có 1 shape tên là ALL rồi, ta cần gán tên cho shape là T01 > T12
tương ứng với 12 cái shape đã vẽ

Thường thì file cũng cở 20 sheet là cùng, vẽ và làm 1 tí là xong
Hơn nữa, chỉ làm 1 lần duy nhất rồi xài mãi mãi, có gì đâu mà ngán
------------
Mà hình như code của Hải thiếu phần Assign Macro cho mấy cái nút thì phải? Và nếu viết code thì nên thế này:
- Code tạo ra 1 sheet mới, đặt tên tùy ý
- Xong, vẽ các shape lên sheet mới, đặt tên theo tên sheet
- Assign Macro cho các Shape
đại khái vậy
 
Lần chỉnh sửa cuối:
Upvote 0
Thường thì file cũng cở 20 sheet là cùng, vẽ và làm 1 tí là xong
Hơn nữa, chỉ làm 1 lần duy nhất rồi xài mãi mãi, có gì đâu mà ngán
------------
Mà hình như code của Hải thiếu phần Assign Macro cho mấy cái nút thì phải? Và nếu viết code thì nên thế này:
- Code tạo ra 1 sheet mới, đặt tên tùy ý
- Xong, vẽ các shape lên sheet mới, đặt tên theo tên sheet
- Assign Macro cho các Shape
đại khái vậy
Viết thử 1 rừng code này cho chạy tẹt ga luôn
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Sửa lại code để đứng ở đâu cũng gọi xóa và tạo shape không bị lỗi.
 

File đính kèm

Upvote 0
Các anh chị giúp đỡ thêm về code Hiện/Ẩn Sheet trong 1 button nhưng có thêm điều kiện là sẽ không ẩn 1 số sheet nào đó dc k? Đôi khi các lãnh đạo đòi hỏi hơi cao làm nhân viên như e mệt bơ phờ ^^
 
Upvote 0
Up cho mọi người giúp đỡ. Lập thớt mới tốn tài nguyên diễn đàn mà lại cùng 1 nội dung @@ Thêm nữa là file excel sau khi tích hợp macro link sheet và ẩn/hiện sheet thì tốn tài nguyên hệ thống dã man. Cỡ 70-80% chip của e, k biết có cách khắc phục k ạ?
 
Upvote 0
Up cho mọi người giúp đỡ. Lập thớt mới tốn tài nguyên diễn đàn mà lại cùng 1 nội dung @@ Thêm nữa là file excel sau khi tích hợp macro link sheet và ẩn/hiện sheet thì tốn tài nguyên hệ thống dã man. Cỡ 70-80% chip của e, k biết có cách khắc phục k ạ?

Chắc máy của bạn bị "cùi bắp" rồi hay sao chứ chỉ là link từ nơi này sang nơi khác thì có gì mà tốn tài nguyên?
 
Upvote 0
Up cho mọi người giúp đỡ. Lập thớt mới tốn tài nguyên diễn đàn mà lại cùng 1 nội dung @@ Thêm nữa là file excel sau khi tích hợp macro link sheet và ẩn/hiện sheet thì tốn tài nguyên hệ thống dã man. Cỡ 70-80% chip của e, k biết có cách khắc phục k ạ?
Máy tính mình khi mở File excel này thì chỉ tốn 1 % của CPU. Chắc tại máy mình xịn quá hoặc là..........
Về lý thuyết thì càng không liên quan. Hic
 
Upvote 0
Máy tính mình khi mở File excel này thì chỉ tốn 1 % của CPU. Chắc tại máy mình xịn quá hoặc là..........
Về lý thuyết thì càng không liên quan. Hic

Ko, máy của e cấu hình trung bình chứ k yếu. RAM 2G, chip duo core chạy tốt office mà. E up file cho các bro xem nhé
Ah mà cho e xin code hiện/ẩn các sheet có loại trừ 1 số sheet cần giữ lại k bị ẩn với ạ
Với file của e thì cần sheet D110, D120 và D130 luôn hiện ạ, thank mọi người
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Ko, máy của e cấu hình trung bình chứ k yếu. RAM 2G, chip duo core chạy tốt office mà. E up file cho các bro xem nhé
Ah mà cho e xin code hiện/ẩn các sheet có loại trừ 1 số sheet cần giữ lại k bị ẩn với ạ
Với file của e thì cần sheet D110, D120 và D130 luôn hiện ạ, thank mọi người

File này trên máy tôi nó chạy ầm ầm, chẳng thấy có vấn đề gì ráo
 
Upvote 0
Done! E đã làm được. Thêm code sau vào sau cùng là ok rồi
Sheet3.Visible = 1
Sheet1.Visible = 1
Sheet2.Visible = 1
Sheet3.Activate
Trong đó sheet1 và sheet2 là sheet mà ta muốn luôn luôn hiện. sheet 3 là sheet chính(menu)
 
Upvote 0
Thường thì file cũng cở 20 sheet là cùng, vẽ và làm 1 tí là xong
Hơn nữa, chỉ làm 1 lần duy nhất rồi xài mãi mãi, có gì đâu mà ngán
------------
Mà hình như code của Hải thiếu phần Assign Macro cho mấy cái nút thì phải? Và nếu viết code thì nên thế này:
- Code tạo ra 1 sheet mới, đặt tên tùy ý
- Xong, vẽ các shape lên sheet mới, đặt tên theo tên sheet
- Assign Macro cho các Shape
đại khái vậy
Tôi hỏi thầy làm thế nào để tạo nút có 2 chức năng trên nút vậy SHOW/HIDE
Thầy hoặc ai biết hướng dẫn được không?
Cám ơn
 
Upvote 0
Chủ đề này rất hay, mong được các bạn giúp đỡ mình thêm. Mình không hiểu được cách làm của các bạn. Xin hãy làm giúp mình file này được không?
 
Upvote 0

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

Back
Top Bottom