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:
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

Các bác ơi chỉ giúp em với, em dùng Office 2007 không biết Format AutoShape ở đâu chỉ thấy cái này thôi

Format Shape.JPG
 
Upvote 0
Mã:
[COLOR=#000000][FONT=Verdana]Bạn đã đọc bài 87 và 94 chưa?[/FONT][/COLOR]

Cảm ơn bác nhiều nhé!
 
Upvote 0
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

Bác ơi giúp em với, em làm theo hướng dẫn thay Sheet "Trang chủ" thành sheet "Menu" và tạo nút Show và Hide rồi nhưng không làm sao để nó hoạt động được, khi nhấp chuột vào nút Show-Hide không hiện và ẩn các sheet.
Em xin chân thành cảm ơn bác!
 

File đính kèm

  • Mau.rar
    101 KB · Đọc: 90
Lần chỉnh sửa cuối:
Upvote 0
Bác ơi giúp em với, em làm theo hướng dẫn thay Sheet "Trang chủ" thành sheet "Menu" và tạo nút Show và Hide rồi nhưng không làm sao để nó hoạt động được, khi nhấp chuột vào nút Show-Hide không hiện và ẩn các sheet.
Em xin chân thành cảm ơn bác!
Bạn sủa lại chỗ màu đỏ
Mã:
Sub ShowAllShs()
  Dim Sh As Worksheet
  Application.ScreenUpdating = False
  On Error Resume Next
  With[B][COLOR=#ff0000] Sheet14.Shapes("Rounded Rectangle 1")[/COLOR][/B].TextFrame.Characters
    For Each Sh In ThisWorkbook.Worksheets
      If Sh.Name <> "Menu" & 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
 
Upvote 0
Bạn sủa lại chỗ màu đỏ
Mã:
Sub ShowAllShs()
  Dim Sh As Worksheet
  Application.ScreenUpdating = False
  On Error Resume Next
  With[B][COLOR=#ff0000] Sheet14.Shapes("Rounded Rectangle 1")[/COLOR][/B].TextFrame.Characters
    For Each Sh In ThisWorkbook.Worksheets
      [B][COLOR=#0000cd]If Sh.Name <> "Menu" & ChrW(7911) Then[/COLOR][/B]
        Sh.Visible = .Text = "SHOW ALL"
      End If
    Next
    .Text = IIf(.Text = "SHOW ALL", "HIDE ALL", "SHOW ALL")
  End With
  Application.ScreenUpdating = True
End Sub
Ngoài ra còn phải sửa chỗ này:
If Sh.Name <> "Menu" & ChrW(7911) Then
Thành:
If Sh.Name <> "Menu" Then
(Chẳng hiểu thêm ChrW(7911) để làm giống gì)
 
Upvote 0
Thầy ơi, dựa vào code trên. Mình chỉ quản lý sheet T01, T02, T03, T04 và Trang chủ thôi.
Các sheet T05 -> T08 cứ để bình thường được không thầy. Mong thầy viết giúp trò với
 
Lần chỉnh sửa cuối:
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

Thầy ơi, dựa vào code trên. Mình chỉ quản lý sheet T01, T02, T03, T04 và Trang chủ thôi.

Các sheet T05 -> T08 cứ để bình thường được không thầy. Mong thầy viết giúp trò với.
Code group cho T01, T02, T03, T04 viết thế nào. Nếu từng sheet thì : And
Sh.Name <> "T01" And Sh.Name <> "T02"... dài quá
 
Lần chỉnh sửa cuối:
Upvote 0
Giải pháp này được không
Sub Hideall_butlast_10()Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
ws.Visible = xlSheetVisible
Next ws
Dim i, x As Long
i = Worksheets.Count
For x = 1 To i - 10
Sheets(x).Activate
ActiveSheet.Visible = xlSheetHidden
Next x
End Sub
Xem sheet T05 -> T10 là sheet mấy thì sửa code x = mấy đến mấy là ok
 
Upvote 0
Cho mình hỏi thêm một chút. File số liệu giữa các sheet rất nhiều và mình luôn phải Find (Ctrl+F) để tìm kiếm dữ liệu trong cả workbook, nhưng sau khi làm như hướng dẫn thì các sheet bị hide mình không find dữ liệu được nữa. Có cách nào để ở bất cứ sheet nào cũng find được dữ liệu trong cả workbook sau khi đã Hide All không ạ. Xin chỉ dùm với ạ.
 
Upvote 0
lổi macro

Anh, Chị ơi em làm theo các bước như trên diễn đàn hướng dẫn
nhưng khi lưu file và mở lên lại macro báo lổi, Anh chị giúp em với ạ
 
Upvote 0
muốn đặt pass cho các T01 đến T08 khi mở thì làm thế nào vậy?
 
Upvote 0
Anh ơi e có 1 file này nhưng sao khi em ẩn sheet thì không ấn được vào các nút ạ? anh giúp e xử lý với
 

File đính kèm

  • Baocaongay.xls
    2 MB · Đọc: 12
Upvote 0
nhờ các anh giúp cho em file sau với em muốn link nhanh tới sheet khác (tên sheet cần đến nằm ở ô c10)
 

File đính kèm

  • BOM TINH GIA NHOM.xls
    2 MB · Đọc: 22
Upvote 0
nhờ các anh giúp cho em file sau với em muốn link nhanh tới sheet khác (tên sheet cần đến nằm ở ô c10)
Bạn cho cái Sub này vào đâu đó mà bạn muốn nó Run
PHP:
Public Sub GPE()
Dim Txt As String
Txt = Sheets("CTDUTOAN").Range("C10").Value
Sheets(Txt).Visible = True
Sheets("CTDUTOAN").Visible = False
End Sub
 
Upvote 0
Anh ndu96081631 ơi a có thể xem giúp e xem file đính kèm này bây giờ gặp tình trạng khi tích chọn nút sheet 1 xong chuyển sang chọn nút sheet 2 thì lại ẩn mất sheet 1 ạ? lại phải mất công tích về trang chủ để showall lại! bác có cách nào khi xem và chuyển không bị ẩn sheet không ạ? mong bác sớm phản hồi ạ?
 

File đính kèm

  • BAO CAO NGAY.XLS
    3.3 MB · Đọc: 16
Upvote 0
Web KT
Back
Top Bottom