Tạo nút nhấn để link đến các sheet

Liên hệ QC

anhtuan1066

Thành viên gạo cội
Tham gia
10/3/07
Bài viết
5,802
Được thích
6,905
Thấy các bạn thường xuyên hỏi về chủ đề này và trên diễn đàn cũng đã có rất nhiều giải pháp thực thi nhưng hầu hết đều dùng vòng lập FOR
Hôm nay tôi hướng dẩn các bạn làm 1 file thuộc dạng này nhưng với các bước thao tác và code cực kỳ đơn giản!
1> Viết code
Hãy viết code trước để các bước chuẩn bị sau này được thuận tiện hơn
Chèn code này vào Module
PHP:
Sub Link2Sh()
  With ActiveSheet
    With Sheets(.Shapes(Application.Caller).AlternativeText)
      .Visible = True: .Select
    End With
    .Visible = 2
  End With
End Sub
2> Các bước chuẩn bị
- Giả sử các bạn đã có 1 file gồm nhiều sheet, hãy chèn thêm 1 sheet và đặt tên là Trang chủ
- Tại sheet Trang chủ này, hãy vẽ các Button bằng công cụ Drawing Object
- Click phải vào Button, chọn Add Text và gõ nhản tùy ý
- Click phải vào Button, chọn Format AutoShape, chuyển sang tab Web và gõ tên sheet cần link vào khung Alternative text (bước này vô cùng quan trọng)

untitled1.JPG





























- Click phải vào Button, chọn Assign Macro và double click vào tên sub Link2Sh

untitled2.JPG






















- Thực hiện thao tác trên cho tất cả các Button trên sheet Trang chủ
- Vẽ Button ở các sheet con và thực hiện các thao tác như trên đối với các Button này
--------------------------
Vậy là xong! Giờ hãy bấm nút và... tận hưởng thành quả
(Xem file đính kèm)
--------------------------
Lưu ý: Bạn có thể vẽ Button bằng bất cứ công cụ nào nhưng nhất định không được dùng các object của thanh Control Toolbox
 

File đính kèm

  • Link2Sh.xls
    68 KB · Đọc: 3,606
Chỉnh sửa lần cuối bởi điều hành viên:
Viết thêm 1 đoạn code thế này:
PHP:
Sub ShowAllShs()
  Dim Sh As Worksheet
  For Each Sh In ThisWorkbook.Worksheets
    Sh.Visible = -1
  Next
End Sub
Trên bảng tính, vẽ 1 nút rồi Assign Macro đến sub trên

Hoặc hoàng tráng hơn chút
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
Nút có 2 tác dụng SHOW và HIDE
Các bác giúp đỡ em với: Em không làm được nút có 2 tác dụng như các Bác nói
 
Upvote 0
Các bác giúp đỡ em với: Em không làm được nút có 2 tác dụng như các Bác nói
Vậy bạn up cái file của bạn có nút lệnh đó lên đây và nêu yêu cầu cụ thể để dễ giúp, còn nếu không thì tải các file mẫu ở các bài viết trên về tham khảo.
 
Upvote 0
Thấy các bạn thường xuyên hỏi về chủ đề này và trên diễn đàn cũng đã có rất nhiều giải pháp thực thi nhưng hầu hết đều dùng vòng lập FOR
Hôm nay tôi hướng dẩn các bạn làm 1 file thuộc dạng này nhưng với các bước thao tác và code cực kỳ đơn giản!
1> Viết code
Hãy viết code trước để các bước chuẩn bị sau này được thuận tiện hơn
Chèn code này vào Module
PHP:
[QUOTE="anhtuan1066, post: 245462, member: 5605"]Thấy các bạn thường xuyên hỏi về chủ đề này và trên diễn đàn cũng đã có rất nhiều giải pháp thực thi nhưng hầu hết đều dùng vòng lập FOR
Hôm nay tôi hướng dẩn các bạn làm 1 file thuộc dạng này nhưng với các bước thao tác và code cực kỳ đơn giản!
1> Viết code
Hãy viết code trước để các bước chuẩn bị sau này được thuận tiện hơn
Chèn code này vào Module
[php]
Sub Link2Sh()
  With ActiveSheet
    With Sheets(.Shapes(Application.Caller).AlternativeText)
      .Visible = True: .Select
    End With
    .Visible = 2
  End With
End Sub
2> Các bước chuẩn bị
- Giả sử các bạn đã có 1 file gồm nhiều sheet, hãy chèn thêm 1 sheet và đặt tên là Trang chủ
- Tại sheet Trang chủ này, hãy vẽ các Button bằng công cụ Drawing Object
- Click phải vào Button, chọn Add Text và gõ nhản tùy ý
- Click phải vào Button, chọn Format AutoShape, chuyển sang tab Web và gõ tên sheet cần link vào khung Alternative text (bước này vô cùng quan trọng)

View attachment 47014





























- Click phải vào Button, chọn Assign Macro và double click vào tên sub Link2Sh

View attachment 47015






















- Thực hiện thao tác trên cho tất cả các Button trên sheet Trang chủ
- Vẽ Button ở các sheet con và thực hiện các thao tác như trên đối với các Button này
--------------------------
Vậy là xong! Giờ hãy bấm nút và... tận hưởng thành quả
(Xem file đính kèm)
--------------------------
Lưu ý: Bạn có thể vẽ Button bằng bất cứ công cụ nào nhưng nhất định không được dùng các object của thanh Control Toolbox

[/php]
2> Các bước chuẩn bị
- Giả sử các bạn đã có 1 file gồm nhiều sheet, hãy chèn thêm 1 sheet và đặt tên là Trang chủ
- Tại sheet Trang chủ này, hãy vẽ các Button bằng công cụ Drawing Object
- Click phải vào Button, chọn Add Text và gõ nhản tùy ý
- Click phải vào Button, chọn Format AutoShape, chuyển sang tab Web và gõ tên sheet cần link vào khung Alternative text (bước này vô cùng quan trọng)

View attachment 47014



Nếu tên sheet không phải là T01 mà là BDS thì code sửa như thế nào
























- Click phải vào Button, chọn Assign Macro và double click vào tên sub Link2Sh

View attachment 47015






















- Thực hiện thao tác trên cho tất cả các Button trên sheet Trang chủ
- Vẽ Button ở các sheet con và thực hiện các thao tác như trên đối với các Button này
--------------------------
Vậy là xong! Giờ hãy bấm nút và... tận hưởng thành quả
(Xem file đính kèm)
--------------------------
Lưu ý: Bạn có thể vẽ Button bằng bất cứ công cụ nào nhưng nhất định không được dùng các object của thanh Control Toolbox[/QUOTE]
xin hỏi tên sheet không phải là T01 mà BDS thi đoạn code sẽ như thế nào hoac sửa code như thế nào:
 
Upvote 0
Viết thêm 1 đoạn code thế này:
PHP:
Sub ShowAllShs()
  Dim Sh As Worksheet
  For Each Sh In ThisWorkbook.Worksheets
    Sh.Visible = -1
  Next
End Sub
Trên bảng tính, vẽ 1 nút rồi Assign Macro đến sub trên

Hoặc hoàng tráng hơn chút
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
Nút có 2 tác dụng SHOW và HIDE
Em làm được rồi, nhưng khi ẩn nó ẩn sheet menu của em luôn, mà để lại 1 sheet khác, giờ em phải chỉnh thế nào các bác
Bài đã được tự động gộp:

Em làm được rồi, nhưng khi ẩn nó ẩn sheet menu của em luôn, mà để lại 1 sheet khác, giờ em phải chỉnh thế nào các bác
Ở code trên 7911 có ý nghĩa gì các bác
Bài đã được tự động gộp:

Nếu là đúng 100% hướng dẫn thì chắc chắn sẽ không có vấn đề gì, bằng ngược lại, bạn đã sai ở công đoạn nào đó ---> Gữi file lên là biết liền
Chào Bác
ChrW(7911) nghĩa là gì hả Bác?
 
Lần chỉnh sửa cuối:
Upvote 0
Có ai có file báo cáo sản xuất bao gồm: Lệnh sản xuất, kế hoạch sản xuất, kho nguyên liệu, theo dõi tiến độ sản xuất, thành phẩm, báo cáo... cho mình xin file nhé
 
Upvote 0
Không biết em làm có đúng không mà Shape không có Format như hướng dẫn.
Excel của em bản 2016 ạ.

Có anh chị nào xem lại giúp em được không ạ?

1576307073146.png

1576307104765.png
 
Upvote 0
Upvote 0
Web KT
Back
Top Bottom