Hỏi thêm chức năng trong code "tạo index"

  • Thread starter Thread starter LikeIt
  • Ngày gửi Ngày gửi
Liên hệ QC

LikeIt

Thành viên tiêu biểu
Tham gia
16/6/06
Bài viết
415
Được thích
254
Nghề nghiệp
Others
Kính gửi các anh chị,

Do chưa hiểu gì nhiều về VBA, em có sử dụng code tạo index, hiện nay khi thử thì nó không có phần BACK lại sheet index (tức là ko có đường link lại sheet index). Các anh chị chỉ giúp điền vào chỗ nào trong code này để có được chữ BACK mà tự động link về sheet index.
Mã:
Sub TaoChiMuc()
' Tao chi muc lien ket tat ca cac Sheet tren Sheet INDEX
Dim wSheet As Worksheet
Dim i As Integer, k As Integer
Application.ScreenUpdating = False
Cells.Select
Selection.ClearContents
i = 1
k = 2
For Each wSheet In Worksheets
    If wSheet.Name <> Sheets(1).Name Then
        i = i + 1
        If i = 15 Then  'Neu duoc 15 dong thi sang cot moi
            i = 2
            k = k + 2
        End If
        Sheets(1).Hyperlinks.Add anchor:=Sheets(1).Cells(i, k), Address:="", _
            SubAddress:="'" & wSheet.Name & "'" & "!A1", TextToDisplay:=wSheet.Name
    End If
Next wSheet
Set wSheet = Nothing
Range("A1").Select
Application.ScreenUpdating = True
End Sub
Tks/ NHT
 
Chỉnh sửa lần cuối bởi điều hành viên:
Kính gửi các anh chị,

Do chưa hiểu gì nhiều về VBA, em có sử dụng code tạo index, hiện nay khi thử thì nó không có phần BACK lại sheet index (tức là ko có đường link lại sheet index). Các anh chị chỉ giúp điền vào chỗ nào trong code này để có được chữ BACK mà tự động link về sheet index.
Tks/ NHT
Bạn cũng có 1 bài tại đây:
http://www.giaiphapexcel.com/forum/showthread.php?t=8798
Sao không áp dụng?
-----------
Thôi, làm cho bạn luôn đây (code dài dòng quá)
PHP:
Sub TaoChiMuc()
  Dim ws As Worksheet, Clls As Range
  Sheets(1).Cells.ClearContents
  For Each ws In Worksheets
    With ws
      If .Name <> Sheets(1).Name Then
        .Range("A1").Name = "Start" & .Index
        .Hyperlinks.Add Anchor:=.Range("A1"), Address:="", SubAddress:="Index", TextToDisplay:="Back to Index"
        i = i + 1
        Set Clls = Sheets(1).Range("B2").Offset(((i - 1) Mod 13), Int((i - 1) / 13))
        Sheets(1).Hyperlinks.Add Anchor:=Clls, Address:="", _
        SubAddress:="'" & .Name & "'" & "!A1", TextToDisplay:=.Name
      End If
    End With
  Next ws
  Range("A1").Select
End Sub
Code này tôi làm vội... lý ra còn có thể rút gọn được nữa đấy!
 
Lần chỉnh sửa cuối:
Upvote 0
Chức năng Back to Index chưa sử dụng được.

Thân.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Sửa dòng 7:
PHP:
.Hyperlinks.Add Anchor:=.Range("A1"), Address:="", SubAddress:="Index", TextToDisplay:="Back to Index"
Thành:
PHP:
.Hyperlinks.Add Anchor:=.Range("A1"), Address:="", SubAddress:="'" & Sheets(1).Name & "'" & "!A1", _
 TextToDisplay:="Back to Index"

Bổ sung:
Nếu code để trong workbook và gán cho sự kiện Workbook_NewSheet, hoặc code để trong Module, và dùng sự kiện Workbook_NewSheet gọi nó ra, thì khi insert 1 sheet mới, nó sẽ tự add sheet mới vào index.
 
Lần chỉnh sửa cuối:
Upvote 0
Cũng có thể dùng sự kiện Worksheet_Activate ---> Mổi khi chọn vào sheet 1 (tức sheet INDEX) thì code chạy...
Ngoài ra xin lưu ý: Việc đặt chử "Back to Index" vào bất cứ cell nào cũng thấy không ổn ---> Lở cell ấy đang có dử liệu xem như là mất sạch sao? ---> Theo tôi, vẽ 1 nút (bằng Auto Shape chẳng han) vào mổi sheet ---> gán cho nó Hyperlink để Back ---> Như vậy sẽ an toàn hơn (đương nhiên công việc vẽ vời này cũng giao cho VBA làm luôn)
 
Upvote 0
Các bạn có biết code nào khi chạy index hay form thì tự bật nút CAPSLOCK khong?
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom