Excel 创建指向其他工作表的超链接

Excel 创建指向其他工作表的超链接,excel,vba,hyperlink,Excel,Vba,Hyperlink,我的工作簿的第一页就像一个目录页。列A中的每个单元格都保存一个IP地址字符串。对于每个IP地址字符串,都有一个名为IP地址的工作表 我想将A列单元格中的字符串转换为指向目标工作表相应工作表单元格A1的超链接 我只需要VBA行,使超链接;我可以计算循环等。请记住,要链接的工作表的名称与将成为链接的单元格的值相同 研究只显示了一些论坛帖子,这些帖子给出了一堆代码,但没有解释任何内容。我录制了一个制作hiperlink的宏。结果是 ActiveCell.FormulaR1C1 = "=HYPERLIN

我的工作簿的第一页就像一个目录页。列A中的每个单元格都保存一个IP地址字符串。对于每个IP地址字符串,都有一个名为IP地址的工作表

我想将A列单元格中的字符串转换为指向目标工作表相应工作表单元格A1的超链接

我只需要VBA行,使超链接;我可以计算循环等。请记住,要链接的工作表的名称与将成为链接的单元格的值相同


研究只显示了一些论坛帖子,这些帖子给出了一堆代码,但没有解释任何内容。

我录制了一个制作hiperlink的宏。结果是

ActiveCell.FormulaR1C1 = "=HYPERLINK(""[Workbook.xlsx]Sheet1!A1"",""CLICK HERE"")"

类似下面的内容将在控制表中的A列中循环,并将单元格中的值转换为超链接。这不是我以前必须做的事情,请原谅我的错误:

Sub CreateHyperlinks()

Dim mySheet As String
Dim myRange As Excel.Range
Dim cell As Excel.Range
Set myRange = Excel.ThisWorkbook.Sheets("Control").Range("A1:A5") '<<adjust range to suit

For Each cell In myRange
    Excel.ThisWorkbook.Sheets("Control").Hyperlinks.Add Anchor:=cell, Address:="", SubAddress:=cell.Value & "!A1" '<<from recorded macro
Next cell

End Sub

这个!符号是关键要素。如果您在下面的代码示例中有一个像mycell这样的单元对象,并将一个单元链接到此对象,那么您必须注意!元素

你必须这样做:

.Cells(i, 2).Hyperlinks.Add Anchor:=.Range(Cells(i, 2).Address), Address:="", _
     SubAddress:= "'" & ws.Name & "'" & _
     "!" & mycell.Address

这是我用来创建索引表的代码

子CreateIndexSheet 将工作表设置为工作表 ActiveWorkbook.Sheets.AddBefore:=工作表1.Name=内容'随意调用 范围A1.选择 Application.ScreenUpdate=False“防止在更新工作表时看到所有闪烁 对于工作表中的每个工作表 ActiveSheet.Hyperlinks.Add锚定:=选择,地址:=,子地址:='&wSheet.Name&'&wSheet!A1,TextToDisplay:=wSheet.Name ActiveCell.Offset1,0。选择“下移一行” 下一个 范围A1.EntireColumn.AutoFit RangeA1.EntireRow.Delete“从内容列表中删除内容表” Application.ScreenUpdating=True 端接头
如果需要将Sheet1超链接到所有或相应的图纸,请使用简单的vba代码。如果要创建单选按钮,请将此宏指定给主页上的按钮

这是:

Sub HomePage()
'
' HomePage Macro
'


' This is common code to go to sheet 1 if do not change name for Sheet1
    'Sheets("Sheet1").Select
' OR 

' You can write you sheet name here in case if its name changes

    Sheets("Monthly Reports Home").Select
    Range("A1").Select

End Sub

这个宏向工作表中添加了一个同名的超链接,我还修改了范围以使其更灵活,只需更改代码中的第一个单元格。很有魅力

Sub hyper()
 Dim cl As Range
 Dim nS As String

 Set MyRange = Sheets("Sheet1").Range("B16")
 Set MyRange = Range(MyRange, MyRange.End(xlDown))

 For Each cl In MyRange
  nS = cl.Value
  cl.Hyperlinks.Add Anchor:=cl, Address:="", SubAddress:="'" & nS & "'" & "!B16", TextToDisplay:=nS
 Next
End Sub

在我的实现中,我引用的单元格可能有几个选项。我使用了以下格式,其中“ws”是正在编辑的当前工作表

For each ws in Activeworkbook.Worksheets
    For i…
       For j...
...
ws.Cells(i, j).Value = "=HYPERLINK(""#'" & SHEET-REF-VAR & "'!" & CELL-REF-VAR & """,""" & SHEET-REF-VAR & """)"

你已经有什么VBA?记录一个宏,你会得到VBA行:为什么不插入一个简单的公式=超链接[workbookname]sheetname!A1,显示文本您只需在链接位置的地址之前,例如Sheet1!A1。最好不要包含工作簿名称,以防重命名工作簿或打开副本。如何使宏链接指向单元格序列?例如,在C1:C500中,我有我想要引用的单元格的索引位置,因此,如果C1表示20,则宏应将A1链接到B20,如果C2表示30,则将A2链接到B30等。谢谢@Lee,我现在已将此应用到我的模板中。我做了一个改变——用一个引号将工作表名称包装起来,以防用户创建的工作表中有空格会打断超链接。ActiveSheet.Hyperlinks.Add锚定:=选择,地址:=,子地址:='&wSheet.Name&'&wSheet!A1,TextToDisplay:=wSheet.Name