VBA-指向工作簿中隐藏的现有工作表的超链接

VBA-指向工作簿中隐藏的现有工作表的超链接,vba,excel,Vba,Excel,根据单元格的值将其超链接到“我的工作簿”中的现有工作表。它贯穿B列,对于“title”一词的任何实例,它都会在其正下方的单元格中放置一个超链接。其正下方单元格中的字符串与对应的图纸名称相同。脚本可以完美地工作,但是如果工作表被隐藏,它将无法打开它。有人能建议如何解决这个问题吗 '在指定列中循环,当找到指定值时,在下面的单元格中放置超链接 Const cWsName As String = "Title Detail" Const cSearch As String = "Title"

根据单元格的值将其超链接到“我的工作簿”中的现有工作表。它贯穿B列,对于“title”一词的任何实例,它都会在其正下方的单元格中放置一个超链接。其正下方单元格中的字符串与对应的图纸名称相同。脚本可以完美地工作,但是如果工作表被隐藏,它将无法打开它。有人能建议如何解决这个问题吗

'在指定列中循环,当找到指定值时,在下面的单元格中放置超链接

  Const cWsName As String = "Title Detail"
  Const cSearch As String = "Title"
  Const cRow1 As Integer = 1
  Const cRow2 As Long = 200
  Const cCol As String = "B"

  Dim oWb As Workbook
  Dim oWs As Worksheet
  Dim rCell1 As Range
  Dim rCell2 As Range
  Dim iR As Integer
  Dim strText As String
  Dim strAddr As String

  Set oWb = ActiveWorkbook
  Set oWs = oWb.Worksheets(cWsName)
  For iR = cRow1 To cRow2
    Set rCell1 = oWs.Range(cCol & iR)
    Set rCell2 = oWs.Range(cCol & iR + 1)
    strText = rCell2.Text 'What's written in the cell.
    strAddr = rCell2.Address 'The address e.g. B1, B13 ...
    If rCell1 = cSearch Then
      If strText <> "" Then
        'Anchor is the place where to put the hyperlink, cell or object.
        'Notice the single quotes (') in the SubAddress.
        rCell2.Hyperlinks.Add _
        Anchor:=rCell2, _
        Address:="", _
        SubAddress:="'" & rCell2 & "'!" & "A1", _
        TextToDisplay:=strText 'The same text as requested
       Else
        'what to do if the cell below the Title cell is empty.
        End If
    End If
  Next

  'End on Title Detail Sheet
  oWb.Sheets("Title Detail").Select

End Sub
'在标题详细信息表上结束 目标表。选择


正如我在回答以下问题时指出的那样:

请注意,您需要显式调用。如果工作表是隐藏的,请执行以下操作


您是否尝试过在工作表的
工作表\u FollowHyperlink
事件中取消隐藏工作表?@nutsch我尝试过添加一个私有子工作表\u FollowHyperlink(ByVal目标为Hyperlink),但无法使其工作?我是不是做了一些明显的错误的事情?谢谢@comintern你的回答没有问题,我只是不知道我做错了什么,所以正在寻求更多的帮助。。。我更新了我的问题,做了一些修改。他们为我工作,除非你或任何人看到我写剧本的方式存在潜在问题
Dim oWs As Workbook
Dim targetString As String, targetSheet As Worksheet
Set oWs = ActiveWorkbook 
targetString = Target.TextToDisplay 
Set targetSheet = oWs.Worksheets(targetString)
If targetSheet.Visible = False Then
    targetSheet.Visible = True
End If
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

    Dim oWs As Worksheet
    Dim targetString As String, targetSheet As Worksheet

    Set oWs = ActiveWorkbook

    targetString = Target.TextToDisplay

    Set targetSheet = oWs.Sheets(targetString)

    If targetSheet.Visible = False Then
        targetSheet.Visible = True
        'If the sheet was hidden, you have to explicitly follow the link again.
        Application.EnableEvents = False
        Target.Follow
        Application.EnableEvents = True
    End If
End Sub