Excel VBA создать гиперссылку на другой лист - PullRequest
3 голосов
/ 22 марта 2012

Надеюсь, простой вопрос, но исследования привели только к сообщениям на форуме, которые дают стек кода, не объясняя ничего из этого.

Первый лист моей рабочей книги похож на страницу содержания. Каждая ячейка в столбце A содержит строку IP-адреса. Для каждого IP-адреса есть отдельная рабочая таблица, которая называется с IP-адресом. Я хочу превратить ячейки в столбце A страницы содержимого в гиперссылки на соответствующие им листы (ячейка A1 целевого листа).

Мне нужна только строка VBA, которая делает гиперссылку; Я могу выяснить зацикливание и т. Д. Помните, что имя страницы, на которую будет ссылаться, точно совпадает со значением ячейки, которая станет ссылкой.

Ответы [ 6 ]

13 голосов
/ 22 марта 2012

Я записал макрос, делающий гиперссылку. Это привело к.

ActiveCell.FormulaR1C1 = "=HYPERLINK(""[Workbook.xlsx]Sheet1!A1"",""CLICK HERE"")"
11 голосов
/ 06 июля 2015

Это код, который я использую для создания индексной таблицы.

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

Надеюсь, это кому-нибудь поможет

6 голосов
/ 22 марта 2012

Что-то похожее на следующее перебирает столбец 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
2 голосов
/ 15 марта 2014

"!" знак является ключевым элементом. Если у вас есть объект ячейки (например, «mycell» в следующем примере кода) и вы связываете ячейку с этим объектом, вам следует обратить внимание! элемент.

Вы должны сделать что-то вроде этого:

.Cells(i, 2).Hyperlinks.Add Anchor:=.Range(Cells(i, 2).Address), Address:="", _
     SubAddress:= "'" & ws.Name & "'" & _
     "!" & mycell.Address
1 голос
/ 18 июля 2017

Этот макрос добавляет гиперссылку на лист с тем же именем, я также изменяю диапазон, чтобы сделать его более гибким, просто изменив первую ячейку в коде. Работает как шарм

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
1 голос
/ 17 августа 2016

Если вам нужно сделать гиперссылку 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...