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:
Các bạn thử nghiên cứu bài toán tiếp theo xem: Tạo nút nhấn trên UserForm để link đến các sheet
Vấn đề ở đây là làm thế nào để không phải viết code cho từng CommandButton riêng lẻ. Hay nói khác hơn, có bao nhiêu CommandButton đi nữa thì cũng dùng 1 Sub duy nhất (giống như bài 1)
Bài này hay lắm nha.. vì có thể ứng dụng cho rất nhiều tình huống khác... Mục địch là rút gọn code
Gợi ý (thêm sự hiểu biết của tôi): Dùng Class Module
(Tôi sẽ tiếp tục trong bài viết tới đây)
-----------------------------------------
Hãy xem tiếp bài viết này để biết cách dùng Class Module: Dùng Class Module để tạo sự kiện người dùng
Bài viết ấy áp dụng cho các CommandButton trên sheet. Với CommandButton trên UserForm, các bạn tự nghiên cứu nhé (còn dễ hơn nữa đấy)
 
Lần chỉnh sửa cuối:
Upvote 0
Các bạn thử nghiên cứu bài toán tiếp theo xem: Tạo nút nhấn trên UserForm để link đến các sheet
Vấn đề ở đây là làm thế nào để không phải viết code cho từng CommandButton riêng lẻ. Hay nói khác hơn, có bao nhiêu CommandButton đi nữa thì cũng dùng 1 Sub duy nhất (giống như bài 1)
Bài này hay lắm nha.. vì có thể ứng dụng cho rất nhiều tình huống khác... Mục địch là rút gọn code
Gợi ý (thêm sự hiểu biết của tôi): Dùng Class Module
(Tôi sẽ tiếp tục trong bài viết tới đây)
-----------------------------------------
Hãy xem tiếp bài viết này để biết cách dùng Class Module: Dùng Class Module để tạo sự kiện người dùng
Bài viết ấy áp dụng cho các CommandButton trên sheet. Với CommandButton trên UserForm, các bạn tự nghiên cứu nhé (còn dễ hơn nữa đấy)
anhtuan ơi sao lâu quá không thấy anh trở lại bài này vậy, em cứ theo dõi hoài đề tài này mà không thấy anh. Em nhắc lại để anh nhớ.
 
Upvote 0
anhtuan ơi sao lâu quá không thấy anh trở lại bài này vậy, em cứ theo dõi hoài đề tài này mà không thấy anh. Em nhắc lại để anh nhớ.

Tôi chỉ đường link ở bài số 2 rồi còn gì. Đấy là bài tiếp theo về link dùng Class Module nhưng lại nằm ở 1 chuyên mục khác (khác về bản chất của code)
 
Upvote 0
Anh Tuấn ơi cho em hỏi chút:
Em đã làm theo cách anh bảo, em thấy rất hay, nhưng khi mình giấu hết, chỉ nhìn thấy trang chủ sheet "Trang Chủ" ấy, không nhìn thấy các sheet còn lại, vậy sau này em muốn nhìn thấy các sheet đó để tiện cho việc chỉnh sửa thì làm thế nào ạ???
 
Upvote 0
Anh Tuấn ơi cho em hỏi chút:
Em đã làm theo cách anh bảo, em thấy rất hay, nhưng khi mình giấu hết, chỉ nhìn thấy trang chủ sheet "Trang Chủ" ấy, không nhìn thấy các sheet còn lại, vậy sau này em muốn nhìn thấy các sheet đó để tiện cho việc chỉnh sửa thì làm thế nào ạ???
Bạn chọn Format\Sheet\Unhide và chọn Sheet --> OK.
Nếu cách trên không được (không nhìn thấy sheet hoặc không cho chọn Unhide) thì bạn nhấn Alt+F11, nhìn bên khung Project sẽ thấy danh sách các sheet. Bạn chọn sheet muốn hiện và thiết lập thuộc tính Visible (trong khung Properties) là -1 - xlSheetVisible là được.
 
Upvote 0
Anh Tuấn ơi cho em hỏi chút:
Em đã làm theo cách anh bảo, em thấy rất hay, nhưng khi mình giấu hết, chỉ nhìn thấy trang chủ sheet "Trang Chủ" ấy, không nhìn thấy các sheet còn lại, vậy sau này em muốn nhìn thấy các sheet đó để tiện cho việc chỉnh sửa thì làm thế nào ạ???
Muốn "thấy" sheet nào thì từ Trang Chủ, cứ bấm vào nút liên kết để đến sheet đó là "thấy" thôi. Có vấn đề gì đâu chứ?
Cho dù có hiện ra tất tần tật thì tại 1 thời điếm, bạn cũng chỉ "nhìn thấy" 1 sheet cơ mà
Còn nếu nhất định muốn SHOW thì làm hẳn 1 nút chuyên làm công việc SHOW ALL này (dễ quá mà)
 
Upvote 0
Muốn "thấy" sheet nào thì từ Trang Chủ, cứ bấm vào nút liên kết để đến sheet đó là "thấy" thôi. Có vấn đề gì đâu chứ?
Cho dù có hiện ra tất tần tật thì tại 1 thời điếm, bạn cũng chỉ "nhìn thấy" 1 sheet cơ mà
Còn nếu nhất định muốn SHOW thì làm hẳn 1 nút chuyên làm công việc SHOW ALL này (dễ quá mà)

mong bác giúp đỡ cụ thể hơn được ko ạ, vì em vẫn chưa bít làm
 
Upvote 0
Upvote 0
mong bác giúp đỡ cụ thể hơn được ko ạ, vì em vẫn chưa bít làm
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 đính kèm

  • Link2Sh_2.xls
    49 KB · Đọc: 1,184
  • Link2Sh_3.xls
    54.5 KB · Đọc: 1,272
Lần chỉnh sửa cuối:
Upvote 0
Em có làm sheet Menu như bài đầu tiên, giờ anh chị cho em hỏi là:
sheet menu của em tự nhiên cũng ẩn đi mất, em ko nhìn thấy sheet này nữa (lúc mới vào file này vẫn nhìn thấy, rùi mất tăm luôn
Giúp em với
 
Upvote 0
Em có làm sheet Menu như bài đầu tiên, giờ anh chị cho em hỏi là:
sheet menu của em tự nhiên cũng ẩn đi mất, em ko nhìn thấy sheet này nữa (lúc mới vào file này vẫn nhìn thấy, rùi mất tăm luôn
Giúp em với
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
 
Upvote 0
máy tính em đang bị con virut Jusched, đó có phải là nguyên nhân ko ạ, có phần mềm nào diệt được con này ko ah
 
Upvote 0
Em có làm sheet Menu như bài đầu tiên, giờ anh chị cho em hỏi là:
sheet menu của em tự nhiên cũng ẩn đi mất, em ko nhìn thấy sheet này nữa (lúc mới vào file này vẫn nhìn thấy, rùi mất tăm luôn
Giúp em với
Trước hết sorry bác anhtuan và ndu nha. Bạn từ từ mà ngâm cứu, Code của bác anhtuan and ndu đó. Chúc thành công
 

File đính kèm

  • Moi Ban Xem Lai.xls
    25 KB · Đọc: 500
Lần chỉnh sửa cuối:
Upvote 0
Khi muốn gỡ bỏ (cởi nút) để file trở về trạng thái bình thường thì mình xóa hết đoạn mã đi là được ạ, hay làm thêm những bước nào nữa???

Mong các huynh tỷ giúp đỡ
 
Upvote 0
Trước hết sorry bác anhtuan và ndu nha. Bạn làm từ từ mà ngâm cứu, Code của bác anhtuan and ndu đó. Chúc thành công

em làm được cái file như anh gửi rùi, nhưng ý em hỏi là bây giờ file menu hoặc 1, 2 ko hiện ra nữa thì mình xử lý tình huông này như thế nào (lúc mở file vẫn nhìn thấy nó rùi mất tăm (máy em chưa nén được file của em nên ko tải lên diễn đàn được vì nặng quá)
 
Lần chỉnh sửa cuối:
Upvote 0
mong các bác giúp em, em gửi file đính kèm rùi đây ạ
 

File đính kèm

  • QLHD 20Tr phien ban 07.05.2011.rar
    679.9 KB · Đọc: 257
Upvote 0

File đính kèm

  • QLHD 20Tr phien ban 07.05.2011.rar
    678.8 KB · Đọc: 714
Lần chỉnh sửa cuối:
Upvote 0
Tại những sheet đang hiện này, bạn chỉ cần vẽ thêm 1 nút để liên kết đến sheet Menu là được rồi

Bác cho em hỏi nguyên nhân chính là do đâu vậy ạ
Bác tô màu đẹp nhỉ, bảo em với

Giờ lại từ sheet menu mình tạo thêm 3 nút link sang các danh mục nữa ạ??? khi còn mỗi sheet menu mà cũng bị mất như lúc đầu em nói thì làm thế nào ạ
 
Upvote 0
Bác cho em hỏi nguyên nhân chính là do đâu vậy ạ
File của bạn, làm sao tôi biết được chứ
khi còn mỗi sheet menu mà cũng bị mất như lúc đầu em nói thì làm thế nào ạ
Thì bấm vào nút Menu để trở về Menu. Nếu chưa có nút thì tự tạo ra nút ấy! Thế thôi
Bài #1 đã hướng dẫn cả rồi, chỉ cần làm đúng là không có vấn đề gì... Cứ thêm sheet thì thêm nút
 
Upvote 0
Web KT
Back
Top Bottom