2016-08-05 2 views
0

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

Я новичок в VBA и не уверен в синтаксисе. Я в основном пытаюсь использовать значение переменной j как номер строки в ссылке на ячейку. "'!A" - это первая часть ссылки на мою ячейку в коде ниже. Затем я пытаюсь конкатенировать строку, чтобы добавить j в качестве номера строки. Можно ли это сделать, используя следующий код? Я попытался окружить j скобками, апостроф безрезультатно.

For j = 2 To LastUsedRow 

    link = "=Hyperlink(""#'" & (ThisWorkbook.Worksheets(i).Name) & "'!A" & j",""" & (ThisWorkbook.Worksheets(i).Name) & """)" 

Большое спасибо

ответ

1

Debug.Print является вашим другом. Это то, что вы получаете с текущим кодом (предполагающей j = 1 и ThisWorkbook.Worksheets(i).Name = "Sheet1"):

=Hyperlink("#'Sheet1'!A1,"Sheet1") 

формула должна выглядеть следующим образом:

=HYPERLINK("#'Sheet2'!A1","Sheet2") 

Так ... добавить просто добавить недостающие ":

link = "=HYPERLINK(""#'" & (ThisWorkbook.Worksheets(i).Name) & _ 
     "'!A" & j & """,""" & (ThisWorkbook.Worksheets(i).Name) & """)" 
+0

Awesome. Большое спасибо за это! –

-1

Вам нужно позвонить на то, что вы хотите, чтобы вытащить из J, таких как: j.Value

+1

j - целое число, оно не имеет свойств. – hstay

+0

Сказал, кто? Похоже, что j - это диапазон, от 2 до LastUsedRow. Поэтому, если вы хотите вызвать значение j, вы делаете: j.value. – AnthonyT

+0

'Dim j As Range' 'j = 2' Сообщите мне, когда это могло когда-либо работать – hstay

1

включая двойные кавычки внутри строки VBA является сложным.

link = "=Hyperlink(""#'" & (ThisWorkbook.Worksheets(i).Name) & "'!A" & j & """,""" & (ThisWorkbook.Worksheets(i).Name) & """)" 

получит link в =Hyperlink("#'SheetName'!A2","SheetName")

+0

Спасибо за ваш ввод , хорошо работает сейчас –

Смежные вопросы