Двойные кавычки и кавычки «ёлочки» в коде VBA Excel. Коды символов кавычек и ввод кавычек «ёлочек» в редакторе VBA Excel с клавиатуры. Примеры.
Двойные кавычки
Двойные прямые кавычки ("Весна"
) обычно называют просто «двойные кавычки» или «прямые кавычки», так как в текстах они встречаются намного чаще одинарных прямых кавычек ('Весна'
).
В VBA Excel прямые кавычки являются специальными символами, обозначающими текст:
x = «Магазин Весна открыт» |
Переменной x
присваивается строка (текст): Магазин Весна открыт
.
Если мы хотим отобразить эту строку со словом "Весна"
в двойных кавычках, необходимо слово в прямых кавычках экранировать еще одной парой двойных кавычек (""Весна""
) или использовать функцию Chr, возвращающую символ по его числовому коду. Числовой код прямых кавычек — 34.
Пример добавления двойных прямых кавычек внутри текста из кода VBA Excel:
Sub Primer1() Dim x As String x = «Магазин ««Весна»» открыт» Debug.Print x ‘Магазин «Весна» открыт x = «Магазин « & Chr(34) & «Весна» & Chr(34) & » открыт» Debug.Print x ‘Магазин «Весна» открыт End Sub |
Кавычки «ёлочки»
Двойные кавычки «ёлочки» обычно называют просто кавычки «ёлочки»
, так как одинарные ‹ёлочки› встречаются очень редко.
Двойные кавычки «ёлочки» не являются спецсимволами, поэтому в строках внутри процедур VBA Excel их можно использовать не только через функцию Chr по числовому коду символа, но и ввести с клавиатуры.
Ввод «ёлочек» с клавиатуры в редакторе VBA Excel осуществляется также с помощью числовых кодов символов открывающей и закрывающей кавычек:
- числовой код открывающей кавычки (
«
) — 171; - числовой код закрывающей кавычки (
»
) — 187.
Сочетания клавиш для ввода «ёлочек» с клавиатуры:
- Alt+0171 — ввод открывающей кавычки (
«
); - Alt+0187 — ввод закрывающей кавычки (
»
).
Обратите внимание, что для ввода «ёлочек» с клавиатуры используется левая клавиша Alt, а числовой код набирается на цифровом блоке справа.
Пример добавления двойных кавычек «ёлочки» внутри текста из кода VBA Excel:
Sub Primer2() Dim x As String x = «Магазин «Весна» открыт» Debug.Print x ‘Магазин «Весна» открыт x = «Магазин « & Chr(171) & «Весна» & Chr(187) & » открыт» Debug.Print x ‘Магазин «Весна» открыт End Sub |
I want to insert an if statement in a cell through vba which includes double quotes.
Here is my code:
Worksheets("Sheet1").Range("A1").Value = "=IF(Sheet1!B1=0,"",Sheet1!B1)"
Due to double quotes I am having issues with inserting the string. How do I handle double quotes?
asked Jan 26, 2012 at 20:18
user793468user793468
4,87823 gold badges80 silver badges126 bronze badges
2
I find the easiest way is to double up on the quotes to handle a quote.
Worksheets("Sheet1").Range("A1").Formula = "IF(Sheet1!A1=0,"""",Sheet1!A1)"
Some people like to use CHR(34)*:
Worksheets("Sheet1").Range("A1").Formula = "IF(Sheet1!A1=0," & CHR(34) & CHR(34) & ",Sheet1!A1)"
*Note: CHAR() is used as an Excel cell formula, e.g. writing «=CHAR(34)» in a cell, but for VBA code you use the CHR() function.
answered Jan 26, 2012 at 20:21
3
Another work-around is to construct a string with a temporary substitute character. Then you can use REPLACE to change each temp character to the double quote. I use tilde as the temporary substitute character.
Here is an example from a project I have been working on. This is a little utility routine to repair a very complicated formula if/when the cell gets stepped on accidentally. It is a difficult formula to enter into a cell, but this little utility fixes it instantly.
Sub RepairFormula()
Dim FormulaString As String
FormulaString = "=MID(CELL(~filename~,$A$1),FIND(~[~,CELL(~filename~,$A$1))+1,FIND(~]~, CELL(~filename~,$A$1))-FIND(~[~,CELL(~filename~,$A$1))-1)"
FormulaString = Replace(FormulaString, Chr(126), Chr(34)) 'this replaces every instance of the tilde with a double quote.
Range("WorkbookFileName").Formula = FormulaString
This is really just a simple programming trick, but it makes entering the formula in your VBA code pretty easy.
answered Feb 24, 2017 at 19:11
D ZellerD Zeller
1811 silver badge2 bronze badges
All double quotes inside double quotes which suround the string must be changed doubled. As example I had one of json file strings : «delivery»: «Standard»,
In Vba Editor I changed it into «»»delivery»»: «»Standard»»,» and everythig works correctly. If you have to insert a lot of similar strings, my proposal first, insert them all between «» , then with VBA editor replace » inside into «». If you will do mistake, VBA editor shows this line in red and you will correct this error.
answered Jul 19, 2016 at 11:08
I have written a small routine which copies formula from a cell to clipboard which one can easily paste in Visual Basic Editor.
Public Sub CopyExcelFormulaInVBAFormat()
Dim strFormula As String
Dim objDataObj As Object
'Check that single cell is selected!
If Selection.Cells.Count > 1 Then
MsgBox "Select single cell only!", vbCritical
Exit Sub
End If
'Check if we are not on a blank cell!
If Len(ActiveCell.Formula) = 0 Then
MsgBox "No Formula To Copy!", vbCritical
Exit Sub
End If
'Add quotes as required in VBE
strFormula = Chr(34) & Replace(ActiveCell.Formula, Chr(34), Chr(34) & Chr(34)) & Chr(34)
'This is ClsID of MSFORMS Data Object
Set objDataObj = CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
objDataObj.SetText strFormula, 1
objDataObj.PutInClipboard
MsgBox "VBA Format formula copied to Clipboard!", vbInformation
Set objDataObj = Nothing
End Sub
It is originally posted on Chandoo.org forums’ Vault Section.
answered Oct 20, 2017 at 4:53
In case the comment by gicalle ever dies:
I prefer creating a global variable:
Public Const vbDoubleQuote As String = """" 'represents 1 double quote (") Public Const vbSingleQuote As String = "'" 'represents 1 single quote (')
and using it like so:
Shell "explorer.exe " & vbDoubleQuote & sPath & vbDoubleQuote, vbNormalFocus
ТРЕНИНГИ
Быстрый старт
Расширенный Excel
Мастер Формул
Прогнозирование
Визуализация
Макросы на VBA
КНИГИ
Готовые решения
Мастер Формул
Скульптор данных
ВИДЕОУРОКИ
Бизнес-анализ
Выпадающие списки
Даты и время
Диаграммы
Диапазоны
Дубликаты
Защита данных
Интернет, email
Книги, листы
Макросы
Сводные таблицы
Текст
Форматирование
Функции
Всякое
Коротко
Подробно
Версии
Вопрос-Ответ
Скачать
Купить
ПРОЕКТЫ
ОНЛАЙН-КУРСЫ
ФОРУМ
Excel
Работа
PLEX
© Николай Павлов, Planetaexcel, 2006-2022
info@planetaexcel.ru
Использование любых материалов сайта допускается строго с указанием прямой ссылки на источник, упоминанием названия сайта, имени автора и неизменности исходного текста и иллюстраций.
Техническая поддержка сайта
ООО «Планета Эксел» ИНН 7735603520 ОГРН 1147746834949 |
ИП Павлов Николай Владимирович ИНН 633015842586 ОГРНИП 310633031600071 |
Чтобы в строку VBA записать символ кавычек, приходится использовать код символа кавычек Chr(34)
или дублировать символ кавычек. В итоге получается громоздкий код вида
'запись формулы в ячейку Excel c.FormulaLocal = "=ГИПЕРССЫЛКА(""[C:Книга.xls]"")" 'или c.FormulaLocal="=ГИПЕРССЫЛКА(" & Chr(34) & "[C:w.xls]" & Chr(34) & ")"
Для заключения строк в кавычки можно использовать функцию
'заключает текст в двойные кавычки (способ 1) Public Function Quotes(text As String) As String Quotes = Chr(34) & text & Chr(34) End Function 'заключает текст в двойные кавычки (способ 2) Public Function Quotes(text As String) As String Quotes = """" & text & """" End Function ... c.FormulaLocal = "=ГИПЕРССЫЛКА(" & Quotes("[C:Книга.xls]") & ")"
Запись опубликована в рубрике программирование с метками VBA. Добавьте в закладки постоянную ссылку.
analyst 437 / 144 / 9 Регистрация: 12.01.2009 Сообщений: 678 Записей в блоге: 1 |
||||
1 |
||||
Поставить кавычки (» «)30.03.2010, 23:19. Показов 52498. Ответов 5 Метки нет (Все метки)
Всем добрый день!
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
30.03.2010, 23:19 |
Ответы с готовыми решениями: Макрос, заключающий в кавычки все слова, заканчивающиеся на «й» Копирование данных в файл.txt добавляет «кавычки» Все слова, начинающиеся на «а», поместить в кавычки Ввести латинский текст и выписать различные слова, которые взяты в кавычки, например, «cat» 5 |
аналитика здесь больше нет… 3372 / 1670 / 184 Регистрация: 03.02.2010 Сообщений: 1,219 |
||||
30.03.2010, 23:52 |
2 |
|||
как вариант — 2 одинарные кавычки
1 |
437 / 144 / 9 Регистрация: 12.01.2009 Сообщений: 678 Записей в блоге: 1 |
|
31.03.2010, 13:08 [ТС] |
3 |
как вариант — 2 одинарные кавычки Одинарные это вот такие ‘ ?
0 |
аналитика здесь больше нет… 3372 / 1670 / 184 Регистрация: 03.02.2010 Сообщений: 1,219 |
||||
31.03.2010, 13:25 |
4 |
|||
Одинарные это вот такие ‘ ? да — апостроф.
1 |
analyst 437 / 144 / 9 Регистрация: 12.01.2009 Сообщений: 678 Записей в блоге: 1 |
||||
31.03.2010, 13:39 [ТС] |
5 |
|||
да — апостроф.
Апостраф не подойдет. Он отображается по другому!
0 |
ironegg 1904 / 781 / 31 Регистрация: 11.02.2010 Сообщений: 1,567 |
||||
31.03.2010, 14:44 |
6 |
|||
гунделой в книжке b & «Разработка настольных приложений в Access 2002.Для профессионалов» & b рекомендует использовать в таких случаях собственную функцию
1 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
31.03.2010, 14:44 |
Помогаю со студенческими работами здесь Отметить полужирным шрифтом в исходном тексте слова имеющие приставки «пре», «при», «на», «не» Как после определенного символа в строке поставить «;» Проверить, содержит ли строка символы отличные от «+», «-«, «*» и «/» вот начал, дальше не знаю что делать Sub rr() Dim s As String,… MS Acces VBA. Как вывести поле «фамилия» и «группа» из таблицы «студенты» в Access ? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 6 |