Excel VBA创建到另一个工作表的超链接

时间:2012-03-21 21:57:59

标签: excel hyperlink excel-vba vba

简单的问题,我希望,但是研究只提出了论坛帖子,这些帖子提供了一堆代码而没有解释任何代码。

我的第一张工作簿就像一个内容页面。 A列中的每个单元格都包含一个IP地址字符串。对于每个IP地址,都有一个单独的工作表,使用IP地址命名。我想将内容页面A列中的单元格转换为相应图纸的超链接(目标图纸的单元格A1)。

我只需要制作超链接的VBA行;我可以弄清楚循环等。请记住,要链接的页面的名称与将成为链接的单元格的值完全相同。

7 个答案:

答案 0 :(得分:13)

我录制了一个制作超链接的宏。这导致了。

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

答案 1 :(得分:11)

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

Sub CreateIndexSheet()
    Dim wSheet As Worksheet
    ActiveWorkbook.Sheets.Add(Before:=Worksheets(1)).Name = "Contents" 'Call whatever you like
    Range("A1").Select
    Application.ScreenUpdating = False 'Prevents seeing all the flashing as it updates the sheet
    For Each wSheet In Worksheets
        ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:=wSheet.Name & "!A1", TextToDisplay:=wSheet.Name
        ActiveCell.Offset(1, 0).Select 'Moves down a row
    Next
    Range("A1").EntireColumn.AutoFit
    Range("A1").EntireRow.Delete 'Remove content sheet from content list
    Application.ScreenUpdating = True
End Sub

希望它有助于某人

答案 2 :(得分:6)

以下内容将循环显示控制表中的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

答案 3 :(得分:2)

“!”标志是关键因素。如果您有一个单元格对象(如下面的代码示例中的“mycell”)并将单元格链接到此对象,则必须注意!元件。

你必须这样做:

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

答案 4 :(得分:1)

如果您需要将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

答案 5 :(得分:1)

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

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

答案 6 :(得分:0)

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

 takePicture = async() => {
    if (this.camera) {
      const options = { quality: 0.5, base64: true };
      const data = await this.camera.takePictureAsync(options);
      console.log(data.uri);//print uri for image saved
    }
  };