При записи строки в ячейку VBA вставляет дополнительные одинарные кавычки - PullRequest
5 голосов
/ 17 октября 2011

Я пытаюсь написать эту формулу, используя VBA:

ActiveCell.Value = "=f(R[-1]C[0],Sheet1!" & ColumnLetter & i & ")"

Где ColumnLetter - некоторая переменная буква, которую мой макрос вычисляет ранее, а f - некоторая функция, а i - некоторое число.

Проблема в том, что когда я запускаю это, ячейка получает это вместо: (если ColumnLetter = F, i = 16):

=f(R[-1]C[0],Sheet1!'F16')

но я хочу:

=f(R[-1]C[0],Sheet1!F16)

Почему VBA или Excel ставят эти одинарные кавычки вокруг F16? Эти дополнительные кавычки не вставляются, если я не включаю R [-1] [0] в качестве аргумента в мою формулу, но мне нужно включить это.

Помощь очень ценится!

Ответы [ 2 ]

9 голосов
/ 17 октября 2011

Это комбинация адресации R1C1 и A1. Вам нужно выбрать один метод и использовать его для обеих частей.
Обратите внимание, что если вы введете =f(R[-1]C[0],Sheet1!F16) в ячейку, по той же причине вы получите ошибку.

Вы говорите, что вам нужно использовать стиль R1C1 для первого адреса, но (при условии, что вы не хотите абсолютный адрес) вы можете использовать .Offset вместо

ActiveCell.Value = "=f(" & ActiveCell.Offset(-1, 0).Address(False, False) _
 & ",Sheet1!" & ColumnLetter & i & ")"
1 голос
/ 17 октября 2011

Апостроф означает для Excel, что он должен интерпретировать его как текст.

Запишите его в ActiveCell.Formula.Таким образом, это признается как Формула.

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