Dùng Hyperlink bị lỗi reference is not valid

Liên hệ QC

bjboyn00b

Thành viên chính thức
Tham gia
17/12/10
Bài viết
84
Được thích
5
Mình có lấy code ở trên mạng để tạo list các sheet trong file ở sheet đầu tiên, với vài sheet không sao, nhưng với file có nhiều sheet thì bị lỗi "reference is not valid"
Code mình lấy như sau:
Mã:
Sub Binh_Creat_List()
'
' Binh_Creat_List Macro
'
' Keyboard Shortcut: Ctrl+j

Dim wsSheet As Worksheet
Dim ws As Worksheet
Dim Counter As Long
On Error Resume Next
Set wsSheet = Sheets("Mucluc")
'Kiem tra su ton tai cua Sheet
On Error GoTo 0
If wsSheet Is Nothing Then
'Neu chua co thi them vao vi tri dau tien cua Workbook
Set wsSheet = ActiveWorkbook.Sheets.Add(Before:=Worksheets(1))
wsSheet.Name = "Mucluc"
End If
With wsSheet
.Cells(2, 1) = "DANH SACH CAC SHEET"
.Cells(2, 1).Name = "Index"
.Cells(4, 1).Value = "STT"
.Cells(4, 2).Value = "Ten Sheet"
End With
'Merge Cell
With Range("A2:B2")
.Merge
.HorizontalAlignment = xlCenter
.Font.Bold = True
End With
'Set ColumnWidth
With Columns("A:A")
.ColumnWidth = 8
.HorizontalAlignment = xlCenter
End With
With Range("A4")
.HorizontalAlignment = xlCenter
.Font.Bold = True
End With
Columns("B:B").ColumnWidth = 30
With Range("B4")
.HorizontalAlignment = xlCenter
.Font.Bold = True
End With
Counter = 1
For Each ws In Worksheets
If ws.Name <> wsSheet.Name Then
'Gan gia tri cot thu tu
wsSheet.Cells(Counter + 4, 1).Value = Counter
'Tao lien ket
wsSheet.Hyperlinks.Add Anchor:=wsSheet.Cells(Counter + 4, 2), _
Address:="", _
SubAddress:=ws.Name & "!A1", _
ScreenTip:=ws.Name, _
TextToDisplay:=ws.Name
'Them nut Quay ve Sheet Muc luc tai moi Sheet
With ws
.Hyperlinks.Add Anchor:=.Range("H1"), Address:="", SubAddress:="Index", TextToDisplay:="Quay ve"
End With
Counter = Counter + 1
End If
Next ws
Set xlSheet = Nothing
End Sub

Ai biết chỉ giúp mình code sai ở đâu với nhé
 
Bác thử code này xem sao, code của bác nhìn hung hãn quá -+*/
Mã:
Sub tao_muc_luc()    
    Dim i As Integer, j As Integer
    
    i = Worksheets.Count
    With Sheet1
        For j = 2 To i
        .Hyperlinks.Add Anchor:=.Cells(j, 1), Address:="", SubAddress:= _
        Sheets(j).Name & "!A1", TextToDisplay:=Sheets(j).Name & "!A1"
        Next j
    End With


End Sub
 
Bác thử code này xem sao, code của bác nhìn hung hãn quá -+*/
Mã:
Sub tao_muc_luc()    
    Dim i As Integer, j As Integer
    
    i = Worksheets.Count
    With Sheet1
        For j = 2 To i
        .Hyperlinks.Add Anchor:=.Cells(j, 1), Address:="", SubAddress:= _
        Sheets(j).Name & "!A1", TextToDisplay:=Sheets(j).Name & "!A1"
        Next j
    End With


End Sub

Cảm ơn bạn, Code của bạn rất nhanh nhưng không có nút back ở từng sheet :D .
 
Cảm ơn bạn, Code của bạn rất nhanh nhưng không có nút back ở từng sheet :D .

Chào bạn,

Mình xin phép được bổ sung thêm code của bạn killitmore để nâng cấp bút Back theo yêu cầu của bạn

Thân

Sub tao_muc_luc()
Dim i As Integer, j As Integer
Dim k As Integer
Dim Sh As Worksheet

i = Worksheets.Count
With Sheet1
For j = 2 To i
.Hyperlinks.Add Anchor:=.Cells(j, 1), Address:="", SubAddress:= _
Sheets(j).Name & "!A1", TextToDisplay:=Sheets(j).Name & "!A1"
Next j
End With
For Each Sh In Worksheets
For k = 2 To i
With Worksheets(k)
.Hyperlinks.Add Anchor:=.Cells(1, 1), Address:="", SubAddress:= _
Sheets(1).Name & "!A1", TextToDisplay:="Back"
End With
Next k
Next Sh


End Sub
 
Web KT

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

Back
Top Bottom