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:
Hiện tại e đang làm một file tương tự như thế, nhưng e không chỉ muốn link tới các sheet khác mà e còn muốn link tới các cell khác nhau trong một sheet vậy có được không ( trong trường hợp sheet đó ẩn). Xin các thầy chỉ bảo giúp em.
Để lấy dữ liệu từ một hoặc nhiều cell tại sheet ẩn thì được, chứ bắt nó Active thì xin thưa không được bạn nhé!
 
Upvote 0
Topic này hay quá. Gpe đúng là một rừng kiến thức..
P/s: comment để tiện theo dõi..
 
Upvote 0
E có 1 sheet khá nhiều bản ghi..ở trang chủ e muốn link đến bản ghi cuối cùng (bản ghi có thể tăng thêm) của sheet đó thì code thế nào ạh?
 
Lần chỉnh sửa cuối:
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:
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)


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

- 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
Với office 2007 trở lên dùng luôn chức năng Hyperlink thầy nhỉ ???
New Picture (18).jpg
 
Upvote 0
E muốn views lại tất cả các sheet như ban đầu thì làm thế nào ạh ??? vì sử dụng unhide ko được..
 
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:
Sub Link2Sh()
  With ActiveSheet
    With Sheets(.Shapes(Application.Caller).AlternativeText)
      .Visible = True: .Select
    End With
    .Visible = 2
  End With
End Sub
....
Nếu muốn từ TRANG CHỦ kết nối đến các sheet khác thì TRANG CHỦ ẩn đi
Còn từ Sheet khác trở về Trang chủ thì sheet khác đó không ẩn đi thì code thay đổi thế nào ạh?

p/s: sau khi nghiên cứu từng bài viết của topic thì e đã làm đc rồi ạh..
 
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
File của e có một số sheets ẩn và ko muốn hiện lên để đỡ rồi file.. code trên hay đổi thế nào để vẫn ẩn các sheet mình muốn dù ấn show all ?? e cảm ơn ạh
 
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

e làm giống như bác mà sao vẫn ko chạy đc kiểm tra lại ko bit thiếu chỗ nào ?
sheet MENU cũng là sheet1, đã thử đổi tên shape All rồi SHOW ALL rồi HIDE ALL,... và thử đổi Alternative text cũng không được ?? mong các bác chỉ giáo
code:
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[php]

còn code này thì chạy ok 
[php]
Sub ShowAllShs1()
  Dim Sh As Worksheet
  For Each Sh In ThisWorkbook.Worksheets
    Sh.Visible = -1
  Next
End Sub [php]
 
Lần chỉnh sửa cuối:
Upvote 0
e có áp dụng code của bác vào file làm việc của mình, thấy rất ý nghĩa nhưng em có 1 chút vấn đề mong bác giúp đỡ đó là:
File của em có tất cả 11 sheet, 3 sheet chính e luôn để hiện còn 8 sheet làm việc e dùng link Assign Macro để đến. nhưng
e muốn link 1 lúc đến 2 sheet liền lúc thì làm thế nào ạ
VD: ở sheet menu chính e tạo các nút ấn D100 thì sẽ hiện lên D110 và D120, nút ấn D200 thì sẽ hiện lên D210 và D220, tương tự không biết phải sửa thế nào ạ hay viết 1 code khác ... mong được các bác giúp đỡ
Sub Link2Sh()
With ActiveSheet
With Sheets
(.Shapes(Application.Caller).AlternativeText)
.
Visible = True: .Select
End With
.Visible = 2
End With
End Sub
 
Upvote 0
ý em là khi ẩn hết các sheet làm việc thì mình ấn nút D100 sẽ hiện lên D110 và D120 đồng thời thôi mà, tương tự D200 ... còn ko cần nó trực tiếp nhảy sang sheet kia, chỉ cần hiện lên là được. Bác có biết thì giúp em với, e cảm ơn nhiều !!!
 
Upvote 0
ý em là khi ẩn hết các sheet làm việc thì mình ấn nút D100 sẽ hiện lên D110 và D120 đồng thời thôi mà, tương tự D200 ... còn ko cần nó trực tiếp nhảy sang sheet kia, chỉ cần hiện lên là được. Bác có biết thì giúp em với, e cảm ơn nhiều !!!

Thế thì đâu phải là TẠO LIÊN KẾT mà chỉ là ĐIỀU KHIỂN VIỆC ẨN HIỆN SHEET thôi, vậy sao bạn lại post bài vào đây?
 
Upvote 0
Thế thì đâu phải là TẠO LIÊN KẾT mà chỉ là ĐIỀU KHIỂN VIỆC ẨN HIỆN SHEET thôi, vậy sao bạn lại post bài vào đây?
thì e thấy đề tài là 'Tạo nút nhấn để link đến các sheet' nên post hỏi luôn ... e đang muốn tạo một nút nhấn để nó hiện lên 2 sheet ẩn. Còn việc Điều khiển việc ẩn sheet phải vào topic nào, e mới tham gia nên ko rành lắm bác ndu biết chỉ e với. mấy nay e mò trên GPE mà ko thấy có bài điều khiển ẩn hiện sheet, chỉ thấy ẩn toàn bộ sheet hoặc link đến sheet khác
 
Upvote 0
bác giúp em file này với, em cảm ơn &&&%$R
 

File đính kèm

  • Book1.xls
    56 KB · Đọc: 19
Upvote 0
Xem qua topic này em Thấy còn Trường hợp này, Em rất mong được mọi người hướng dẫn:
- Ví dụ: Em có 1 File có khoảng 50 Sheet (Sh1, Sh2, ... Sh50) em thiết kế sheet Trang chủ để link đến 50 sheet đó bằng cách vẽ Shapes và đặt Hyperlink theo như hướng dẫn của Bác (Anh Tuấn) thì không vấn đề gì. Vẫn đề em muốn hỏi là một trong các sheet (Sh1, Sh2, ..... Sh50) đó hiện tại chưa được tạo ra (hoặc Move or copy) đến. Vậy làm thế nào để khi em tạo ra các sheet (Sh1, Sh2, ..... Sh50) (hoặc Move or copy) bất kỳ trong các sheet trên thì (nhận ra các sheet đó) để khi bấm vào nút thiết kế trên sheet trang chủ thì link đến sheet có tên tương ứng mới tạo ra.
- Em cảm ơn mọi người rất nhiều!.
 
Lần chỉnh sửa cuối:
Upvote 0
- Khi tạo ra sheet mới có tên trong shapes được Hyperlink thì tự động nhận tên sheet dể khi bấm vào nút shapes được thiết kế trên sheet trang chủ và ngược lại từ sheet mới tạo ra được link đến sheet trang chủ.
- Trân trọng cảm ơn mọi người hướng dẫn!.
 
Lần chỉnh sửa cuối:
Upvote 0
anh tuấn ơi,e gà quá k biết cách vẽ các Button bằng công cụ Drawing Object trên excel 2007. a giúp e với
 
Upvote 0
giúp em bài này với, e có các sheet GIA, COST %, GA CHIEN GIO, THUC DON , E muốn sheet COST % sẽ là trang chủ, các sheet còn lại bị giấu đi, và khi muốn đii đến sheet nào thì chỉ cần bấm đến sheet đó thôi. e muốn làm giống như file mẫu này (file đính kèm). em xin hướng dẫn chi tiết luôn nhé, tại e muốn biết cách làm như thế nào, em cảm ơn rất nhiều.
 

File đính kèm

  • Book2.xlsx
    40.5 KB · Đọc: 19
Upvote 0
10339418_789945621023676_5162291087107423550_o.jpg


Em bị lỗi như sau... nhờ mọi người gỡ giúp:
Em làm theo các bước hướng dẫn nói chung đã hoạt động tốt... nhưng em cứ thoát excel, khi mở lại thì marco không chạy nữa... (báo lỗi như trên). Em kiểm tra thì mất marco đã tao... lại phải tạo lại?
Em không hiểu vì sao lại như thế.
Nhờ mấy sự phụ gỡ rối giúp.
Thân ái!
 
Upvote 0
10339418_789945621023676_5162291087107423550_o.jpg


Em bị lỗi như sau... nhờ mọi người gỡ giúp:
Em làm theo các bước hướng dẫn nói chung đã hoạt động tốt... nhưng em cứ thoát excel, khi mở lại thì marco không chạy nữa... (báo lỗi như trên). Em kiểm tra thì mất marco đã tao... lại phải tạo lại?
Em không hiểu vì sao lại như thế.
Nhờ mấy sự phụ gỡ rối giúp.
Thân ái!
Bạn gán Macro vào file xong, ấn F12, khung Save as type chọn Excel Macro-Enabled Workbook. Nó sẽ lưu file với đuôi là .xlsm macro mới lưu được trong file và hoạt động được. Mỗi lần mở file phải Enable Macros.
 
Upvote 0
Web KT
Back
Top Bottom