Excel VBA || Использование значения переменной в операторе Selection.Formula - PullRequest
0 голосов
/ 02 мая 2018

Я знаю, что на сайте есть тонна связанных вопросов, но по какой-то причине я не могу получить этот макрос для получения правильных результатов ... пожалуйста, помогите !!

Код:

    Sheets("Interface Catalogue").Select
    Dim UniqID As String
    UniqID = Trim(ActiveCell.Value)


    Sheets("Data Elements").Select
    LastB = Cells(Rows.Count, "B").End(xlUp).Row
    LastA = Cells(Rows.Count, "A").End(xlUp).Row
    If LastA > LastB Then
            Range("A" & Rows.Count).End(xlUp).Offset(10).Select
            Selection.Formula = "=HYPERLINK(""#""&CELL(""address"",INDEX('Interface Catalogue'!F:F,MATCH(""& UniqID &"",'Interface Catalogue'!F:F,0))),""& UniqID &"")"
        Else
            Range("B" & Rows.Count).End(xlUp).Offset(2).Previous.Select
            Selection.Formula = "=HYPERLINK(""#""&CELL(""address"",INDEX('Interface Catalogue'!F:F,MATCH(""& UniqID &"",'Interface Catalogue'!F:F,0))),""& UniqID &"")"

        End If
End Sub

При запуске макроса следует ввести гиперссылку в ячейку на рабочем листе «Элементы данных» (столбец A или столбец B, основанный на «If»), который ссылается на значение, назначенное переменной UniqID (ActiveCell при макросе). находится в рабочем листе «Каталог интерфейсов» ...

Я почти уверен, что проблема возникает в том, как Формула интерпретирует мою переменную ("" & UniqID & "" - - Правильный синтаксис ???) ... Когда я жестко кодирую значение в формуле вместо использования переменная UniqID, это работает. Когда я отлаживаю и проверяю значение, назначенное переменной UniqID, это значение ActiveCell (как и ожидалось). В настоящее время я получаю гиперссылку «# N / A» в соответствующей ячейке «Элементы данных», поэтому остальная часть кода работает. Формула просто не находит значение на вкладке «Интерфейсный каталог» (опять же, на самом деле, похоже, что вопрос заключается в том, как переменная используется в операторе selection.formula, потому что, когда я жестко кодирую значение, оно работает) .

Чтобы быть ясным, я полный новичок в VBA (как я только начал вчера) ... На самом деле просто надеюсь выяснить это. Спасибо, заранее !!

1 Ответ

0 голосов
/ 02 мая 2018

Изменение ""& UniqID &"" to """ & UniqID &"""

Две двойные кавычки внутри строки переводятся в одну двойную кавычку. Таким образом, вам нужен еще один конец строки, чтобы вы могли объединить вашу переменную. Затем еще один, чтобы запустить строку обратно, а затем еще два, чтобы превратить в литерал ".

Это сбивает с толку, но имеет смысл после того, как вы обернетесь вокруг него. Вы также можете сделать:

" & Chr(34) & UniqID & Chr(34) & " 

где Chr (34) - двойная кавычка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...