【问题标题】:hyperlink in visual basic excelVisual Basic excel中的超链接
【发布时间】:2021-04-12 19:44:56
【问题描述】:

我在代码中想要的是,当我在 sheet1 中单击此单元格 B3 时,它会将我定向到 sheet2 中的 A5,反之亦然,当我单击 sheet2 中的 A5 时,它将带我回到 sheet1 中的 B3 https://i.stack.imgur.com/qUngD.jpg

Sub Macro3()
'
' Macro3 Macro
'

'
    Range("B3").Select
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
    "Sheet2!A5", TextToDisplay:="gg"
    Sheets("Sheet2").Select
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
    "Sheet1!B3", TextToDisplay:="gg"
    Sheets("Sheet1").Select
End Sub

现在我的问题是如果工作表的名称是用户定义的怎么办?有一个消息框说您应该输入工作表的名称。所以子地址现在改变了,它不再只是“Sheet2”了。例如,您在 msgbox 中输入“123”,工作表的名称现在将变为“Sheet2 123”。

【问题讨论】:

  • when i click a button, the cell B3 in shee1t becomes blue or indicating it has hyperlink - 你能更好地解释一下吗?
  • 您应该遍历工作表集合。如果工作表总是索引为 1 和 2,则在后端按索引而不是名称
  • 工作表的名称取决于用户定义的输入。我可以用吗 '&'?我试图添加它“Sheet2 &”但错误

标签: excel vba


【解决方案1】:

您应该利用工作表集合的索引。

Sub IndexingSheets()
    Sheets(1).Range("B3").Formula = _
     "=HYPERLINK(""#" & ThisWorkbook.Sheets(2).Name & "!A5"", ""TextToDisplay"")"
    Sheets(2).Range("A5").Formula = _
     "=HYPERLINK(""#" & ThisWorkbook.Sheets(1).Name & "!B3"", ""TextToDisplay"")"
End Sub

此代码假定您的 sheet1 和 sheet2 始终是工作簿中的前两张表。


但是,如果您想询问名称,则可以改用此名称:
代码检查工作表是否已经存在(所以你可以参考它)。如果是,则执行宏,如果不是,则递归调用该过程以请求另一个名称。
Dim sheetExist As Boolean

Sub PrefNamedSheets()

    Dim shName$, i&
    shName = InputBox("Whats the second sheet name?")
    For i = 1 To Worksheets.Count
        If StrComp(CStr(Sheets(i).Name), shName, vbTextCompare) = 0 Then
            sheetExist = True
        End If
    Next i
    If sheetExist Then
        ActiveSheet.Range("B3").Formula = _
         "=HYPERLINK(""#" & shName & "!A5"", ""TextToDisplay"")"
        Sheets(shName).Range("A5").Formula = _
         "=HYPERLINK(""#" & ThisWorkbook.Sheets(1).Name & "!B3"", ""TextToDisplay"")"
    Else
        Call PrefNamedSheets
    End If
End Sub

您可能还会发现this link 很有用!

【讨论】:

  • 我尝试了您发布的第一个代码,但是当我单击它时,它说引用无效。我也忘了说有隐藏的工作表。隐藏的工作表是否计入工作表的索引?
  • 哎呀,很抱歉发错了。隐藏的工作表是否计入工作表的索引?
  • @kazSone This code assumes your sheet1 and sheet2 are always the first two sheets in the workbook. 如果您确定工作簿的结构,即。您知道参考需要哪两张纸,然后使用第一个代码。只需确保您的工作表索引引用正确的工作表即可。否则,您应该使用第二种解决方案。
  • @kazSone 自己试试吧!隐藏一些工作表然后 msgbox 计数。 -- 或者参考MSDN
  • 只是确保隐藏的工作表包含在索引中。但是当我尝试它时,参考仍然无效。但它应该链接的位置现在是正确的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-08
  • 1970-01-01
  • 1970-01-01
  • 2015-03-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多