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:
Khi các nút này đã được vẽ hoàn chỉnh và đi vào hoạt động, em muốn sửa lại màu sắc... các nút này thì làm thế nào ạ
 
Upvote 0
Khi các nút này đã được vẽ hoàn chỉnh và đi vào hoạt động, em muốn sửa lại màu sắc... các nút này thì làm thế nào ạ
Trước hết bạn copy đoạn code vào đi. Xong rồi bạn phải làm cái nút có màu sắc hoàn chỉnh rồi bạn đặt tên ở Web và làm theo hướng dẫn của bác ndu. thế là xong. Thân
 
Upvote 0
Khi các nút này đã được vẽ hoàn chỉnh và đi vào hoạt động, em muốn sửa lại màu sắc... các nút này thì làm thế nào ạ
Muốn màu sắc nào thì tô màu sắc đó! Tôi đoán có lẽ bạn đang muốn biết làm sao cho cái nút nó có dạng 3D?
Xem 1 ví dụ nhỏ này nhé

[video=youtube;GfVh0A2p4Z0]http://www.youtube.com/watch?v=GfVh0A2p4Z0[/video]
 
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 nút có 1 tác dụng rùi,
Bác có thể hướng dẫn cho em cụ thể làm nút 2 tác dụng được ko ạ
Em vẫn chưa làm được
Chân thành cảm ơn các anh chị trong diễn đàn
 
Upvote 0
Em chưa biết cách xuất bảng dữ liệu từ Excel sang Word Bác nào giúp được em làm ơn chỉ dẫn chi tiết hộ, em mới học máy tính nên thao tác rất chậm và ít kiến thức. Cám ơn các Bác!
 
Upvote 0
Cảm ơn, các anh chị, mong được chỉ giáo nhiều hơn nữa.
 
Upvote 0
em chưa hiểu đoạn code "With Sheets(.Shapes(Application.Caller).AlternativeText)". nó liên quan đến các sheets như thế nào. Bác ndu có thể giải thích chổ này thêm 1 tý được không?
 
Upvote 0
em chưa hiểu đoạn code "With Sheets(.Shapes(Application.Caller).AlternativeText)". nó liên quan đến các sheets như thế nào. Bác ndu có thể giải thích chổ này thêm 1 tý được không?
.Shapes(Application.Caller) chính là cái Shape (nút) mà ta đang bấm vào
.Shapes(Application.Caller).AlternativeText là lấy ký hiệu mà ta đã gõ trong tab Web (xem bài 1)
Mà trong tab Web, cái ta ký hiệu chính là tên sheet
 
Upvote 0
Em vẫn chưa làm được nút có 2 tác dụng, mong các anh chị giúp đỡ thêm
Khi em vẽ nút có 2 tác dụng và em gõ tên là: SHOW ALL thì đã đủ chưa vậy HIDE ALL mình gõ ở đâu, em chưa hiểu cho lắm!!!

Chân thành cảm ơn các huynh tỷ!!!
 
Upvote 0
Thông báo lỗi màu vàng tại MSg... mình sửa lại như thế nào cho đúng ạ, em chưa hiểu

Sub Test()
MsgBox AscW([I4])
End Sub
 
Upvote 0
Có ai có clip hướng dẫn tạo Menu để truy xuất tới các Sheet với. Cảm ơn nhé.
[h=3] [/h]
 
Upvote 0
.Shapes(Application.Caller) chính là cái Shape (nút) mà ta đang bấm vào
.Shapes(Application.Caller).AlternativeText là lấy ký hiệu mà ta đã gõ trong tab Web (xem bài 1)
Mà trong tab Web, cái ta ký hiệu chính là tên sheet

Cái này có làm được với nút CommandButton trong Control Toolbox hay không? Em thử thì không được. Nếu được thì làm thế nào?
 
Upvote 0
Cái này có làm được với nút CommandButton trong Control Toolbox hay không? Em thử thì không được. Nếu được thì làm thế nào?

Giả sử là làm được đi, rồi bằng cách nào bạn Asign Macro cho nút ấy? Chẳng lẽ lại viết cho mỗi 1 CommandButton 1 code liên kết đến Sub Link2Sh? Nếu thế thì thôi ta viết trực tiếp code link vào CommandButton luôn cho rồi
 
Upvote 0
Giả sử là làm được đi, rồi bằng cách nào bạn Asign Macro cho nút ấy? Chẳng lẽ lại viết cho mỗi 1 CommandButton 1 code liên kết đến Sub Link2Sh? Nếu thế thì thôi ta viết trực tiếp code link vào CommandButton luôn cho rồi

Thì là vậy đó, ở bài vừa rồi mới trả lời bạn dùng Hyperlink đó, nút lệnh là CommandButton vì thế mới hỏi đó thôi, nếu viết được như vậy thì nút lệnh đó mình Call Link2Sh thôi, chứ viết thêm chi nữa Thầy?
 
Upvote 0
Thì là vậy đó, ở bài vừa rồi mới trả lời bạn dùng Hyperlink đó, nút lệnh là CommandButton vì thế mới hỏi đó thôi, nếu viết được như vậy thì nút lệnh đó mình Call Link2Sh thôi, chứ viết thêm chi nữa Thầy?
Cở 50 cái cmd thì sẽ có 50 lệnh Call cái quái gì đó.... Ẹc.. Ẹc... làm biếng chết luôn
 
Upvote 0
không biết trong excell 2007 thì kick chuột phải vào chẳng thấy cái hộp thoại fomat autoshap ở đâu và không nhìn thấy mục wep trong đó nữa ai biết chỉ giúp với, xin cảm ơn!
 
Upvote 0
không biết trong excell 2007 thì kick chuột phải vào chẳng thấy cái hộp thoại fomat autoshap ở đâu và không nhìn thấy mục wep trong đó nữa ai biết chỉ giúp với, xin cảm ơn!

Bạn click chuột phải và chọn vào mục Size and Properties, tại đây bạn chọn vào Alt Text.
 
Upvote 0
À mình nhìn thấy rồi cám ơn bạn nhiều nha
 
Upvote 0
Giả sử là làm được đi, rồi bằng cách nào bạn Asign Macro cho nút ấy? Chẳng lẽ lại viết cho mỗi 1 CommandButton 1 code liên kết đến Sub Link2Sh? Nếu thế thì thôi ta viết trực tiếp code link vào CommandButton luôn cho rồi

Chào anh, em muốn gửi lời cảm ơn tới anh về chức năng này, rất hay. Em đã áp dụng vào phần báo cáo của mình, tuy nhiên em gặp 1 sự cố như sau, nhưng không biết phải xử lý như thế nào.

Ở "trang_chu" -> link tới "san_xuat" -> ở đây lại link tới "thang_8" và các tháng khác. Và em gặp sự cố như sau ở "thang_8".. Khi click vô "thang_8", em muốn có 1 link quay về "san_xuat" nên đã làm 1 button với lệnh như sau: "sheet("thang_8").select".

Tuy nhiên câu lệnh bị lỗi, em không biết phải giải quyết sự cố này như thế nào ....Rất mong được anh và mọi người giúp đỡ

Em xin cảm ơn !
 

File đính kèm

  • test.rar
    64.1 KB · Đọc: 98
Upvote 0
Bạn dùng lệnh Select đối với sheet đang ẩn nên bị báo lỗi. Unhide trước khi select sẽ hết lỗi.
Mã:
Sub Button2_Click()
    With Sheets("San_xuat")
     .Visible = True
     .Select
    End With
End Sub
 
Upvote 0
Web KT
Back
Top Bottom