Active hyperlink tạo sheet từ hyperlink name (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

zztantaibazz

Thành viên chính thức
Tham gia
19/8/13
Bài viết
96
Được thích
46
Nghề nghiệp
M&A Specialist - RM Assitant
Hiện tại mình có bài toán như thế này.
Sheet INDEX có nhiều hyperlink và file excel hiện tại chỉ có một sheet.

Mình muốn khi click vào hyperlink sẽ tạo ra sheet với tên của hyperlink đã click vào.

Và cũng muốn hỏi thêm về code khi click vào hyperlink back về INDEX thì sẽ xóa luôn sheet đó.

Thanks mọi người.
 

File đính kèm

Hiện tại mình có bài toán như thế này.
Sheet INDEX có nhiều hyperlink và file excel hiện tại chỉ có một sheet.

Mình muốn khi click vào hyperlink sẽ tạo ra sheet với tên của hyperlink đã click vào.

Và cũng muốn hỏi thêm về code khi click vào hyperlink back về INDEX thì sẽ xóa luôn sheet đó.

Thanks mọi người.

1> Cho code dưới đây vào 1 Module:
Mã:
Function SheetExists(ByVal SheetName As String) As Boolean
  On Error Resume Next
  SheetExists = Not ActiveWorkbook.Sheets(SheetName) Is Nothing
End Function
Function isValidSheetName(ByVal SheetName As String) As Boolean
  If (Len(SheetName) > 31) Or (Len(SheetName) = 0) Then Exit Function
  With CreateObject("VBScript.RegExp")
    .Pattern = "[\\:\][/?*]"
    isValidSheetName = Not .Test(SheetName)
  End With
End Function
2> Cho code dưới đây vào Thisworkbook:
Mã:
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
  Dim SheetName As String, wks As Worksheet
  On Error Resume Next
  SheetName = Target.Name
  If UCase(Sh.Name) = "INDEX" Then
    If isValidSheetName(SheetName) Then
      If Not SheetExists(SheetName) Then
        With Worksheets.Add(After:=Sheets(Sheets.Count))
          .Name = SheetName
          .Hyperlinks.Add .Range("A1"), "", "'" & Sh.Name & "'!" & Target.Range.Address, , "BACK"
        End With
      End If
    End If
  Else
    Application.DisplayAlerts = False
    If SheetName = "BACK" Then Sh.Delete
    Application.DisplayAlerts = True
  End If
End Sub
Xong!
 

File đính kèm

Upvote 0
Thanks thầy nhiều. Đang học VBA đọc code này hơi rối :P
 
Upvote 0
Hi Thầy, Nhờ thầy chỉ giúp em thêm bước nữa.

Giả sử em tạo ra 3 sheets AAA11, AAA11, AAA13 thì ngay tại sheet Index các ô A1, A2, A3 sẽ được tạo hyperlink đến 3 sheet vừa tạo.

Thầy có thể sữa giúp em code trong file.
Em muốn giả sử khi nhấn vào Back trong sheet AAA13 thì sheet AAA13 sẻ bị xoá và tại ô A3 sheet Index hyperlink sẽ link về "Index!A1". A1 và A2 vẫn còn hyperlink đến 2 sheet AAA11 và AAA12.

Dữ liệu khoảng 300 dòng không biết làm code như thế này có nặng hem .

Thanks thầy nhiều.
 

File đính kèm

Upvote 0

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

Back
Top Bottom