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 = """это - "" кавычка"""
Я часто вставляю формулы в макросах, и там конечно возиться с этой историей приходиться будь здоров. Надеюсь, что эта заметка позволит кому-нибудь сэкономить немного времени и нервов.
1 минута
3 января 2023