Найти тему
6 подписчиков

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


В других языках программирования для решения этой проблемы можно использовать другой ограничитель строки: одинарные или обратные кавычки, например. Однако в VBA одинарная кавычка комментирует все символы справа, а обратную он просто не понимает, поэтому такой вариант не проходит. Так что делать? Есть три варианта:

1. Функция Chr()
Эта функция позволяет вставить в строку любой символ. Код кавычек - 34. Таким образом, мы разбить строку на две подстроки и соединить значения символом & (амперсанд), вставив между ними функцию:

Range("A1").Value = "это - " & Chr(34) & " кавычка"

2. Переменная
Чтобы сократить запись, можно создать переменную со значением Chr(34) и использовать ее:

a = Chr(34)
Range("A1").Value = "это - " & a & " кавычка"

3. Две кавычки (экранирование)
Также можно экранировать кавычку второй кавычкой. Если нужно вставить их в начале или конце строки, то кавычек будет три:

Range("A1").Value = """это - "" кавычка"""

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

Больше полезных постов в ТГ канале Digital Sfera.
Тема для любителей макросов Excel. Вставить двойные кавычки в строку в макросе — та еще беда, потому что если просто вставить кавычку — вылезет ошибка синтаксиса.
1 минута