Vba excel как вставить кавычки в строку

Двойные кавычки и кавычки «ёлочки» в коде 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


Чтобы в строку 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. Добавьте в закладки постоянную ссылку.

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?

Andrei Konstantinov's user avatar

asked Jan 26, 2012 at 20:18

user793468's user avatar

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.

thomas's user avatar

answered Jan 26, 2012 at 20:21

Brain2000's user avatar

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 Zeller's user avatar

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

Sharunas Bielskis's user avatar

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

shrivallabha.redij's user avatar

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

analyst

437 / 144 / 9

Регистрация: 12.01.2009

Сообщений: 678

Записей в блоге: 1

1

Поставить кавычки (» «)

30.03.2010, 23:19. Показов 52464. Ответов 5

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Всем добрый день!
Коллеги подскажите пожалуйста как можно в ячейку с помощью VBA поставить кавычки (вот такой знак — «)?
Я только нашёл способ сделать это с помощью функции Chr(34).
Код выглядит так:

Visual Basic
1
cells(1,1)=chr(34)



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

30.03.2010, 23:19

Ответы с готовыми решениями:

Макрос, заключающий в кавычки все слова, заканчивающиеся на «й»
помогите пожалуйста написать программу:)
задание: 1)открыть ms word 2)написать…

Копирование данных в файл.txt добавляет «кавычки»
Коллеги, доброго времени суток.
При копировании в файл.txt ячеек из экселя макросом в текстовике в…

Все слова, начинающиеся на «а», поместить в кавычки
Ввести текст. Все слова начинающиеся на "а" поместить в кавычки.

Ввести латинский текст и выписать различные слова, которые взяты в кавычки, например, «cat»
Ввести латинский текст и выписать различные слова, которые взяты в кавычки, например, "cat"

5

аналитика

здесь больше нет…

3372 / 1670 / 184

Регистрация: 03.02.2010

Сообщений: 1,219

30.03.2010, 23:52

2

Visual Basic
1
cells(1,1)="""" '4 штуки

как вариант — 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

Цитата
Сообщение от analyst
Посмотреть сообщение

Одинарные это вот такие ‘ ?

да — апостроф.
Кстати, если нужно две кавычки («»), то в коде

Visual Basic
1
cells(1,1)="""""" '6 штук



1



analyst

437 / 144 / 9

Регистрация: 12.01.2009

Сообщений: 678

Записей в блоге: 1

31.03.2010, 13:39

 [ТС]

5

Цитата
Сообщение от аналитика
Посмотреть сообщение

да — апостроф.
Кстати, если нужно две кавычки («»), то в коде

Visual Basic
1
cells(1,1)="""""" '6 штук

Апостраф не подойдет. Он отображается по другому!
Откуда такие познания на счёт кавычек, это есть в документации?)



0



ironegg

1904 / 781 / 31

Регистрация: 11.02.2010

Сообщений: 1,567

31.03.2010, 14:44

6

гунделой в книжке b & «Разработка настольных приложений в Access 2002.Для профессионалов» & b рекомендует использовать в таких случаях собственную функцию

Visual Basic
1
2
3
Function b()
    b = Chr(34)
End Function



1



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

31.03.2010, 14:44

Помогаю со студенческими работами здесь

Отметить полужирным шрифтом в исходном тексте слова имеющие приставки «пре», «при», «на», «не»
Отметить полужирным шрифтом в исходном тексте слова имеющие приставки "пре",
"при", "на", "не"….

Как после определенного символа в строке поставить «;»
данные содержатся в txt формате
нужно из него сделать csv
подскажите пожалуйста как после…

Проверить, содержит ли строка символы отличные от «+», «-«, «*» и «/»
"+", "-", "*" и "/"

вот

начал, дальше не знаю что делать

Sub rr()

Dim s As String,…

MS Acces VBA. Как вывести поле «фамилия» и «группа» из таблицы «студенты» в Access ?
Использовать Fields? Посмотрите в рисунке задания.

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

6

Заключаем строку VBA в кавычки

Чтобы в строку 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]») & «)»

ГЛАВНАЯ

ТРЕНИНГИ

   Быстрый старт
   Расширенный Excel
   Мастер Формул
   Прогнозирование
   Визуализация
   Макросы на VBA

КНИГИ

   Готовые решения
   Мастер Формул
   Скульптор данных

ВИДЕОУРОКИ

ПРИЕМЫ

   Бизнес-анализ
   Выпадающие списки
   Даты и время
   Диаграммы
   Диапазоны
   Дубликаты
   Защита данных
   Интернет, email
   Книги, листы
   Макросы
   Сводные таблицы
   Текст
   Форматирование
   Функции
   Всякое
PLEX

   Коротко
   Подробно
   Версии
   Вопрос-Ответ
   Скачать
   Купить

ПРОЕКТЫ

ОНЛАЙН-КУРСЫ

ФОРУМ

   Excel
   Работа
   PLEX

© Николай Павлов, Planetaexcel, 2006-2022
info@planetaexcel.ru


Использование любых материалов сайта допускается строго с указанием прямой ссылки на источник, упоминанием названия сайта, имени автора и неизменности исходного текста и иллюстраций.

Техническая поддержка сайта

ООО «Планета Эксел»

ИНН 7735603520


ОГРН 1147746834949
        ИП Павлов Николай Владимирович
        ИНН 633015842586
        ОГРНИП 310633031600071 

#excel #vba

#excel #vba #двойные кавычки

Вопрос:

Я хочу вставить оператор if в ячейку через vba, который включает двойные кавычки.

Вот мой код:

 Worksheets("Sheet1").Range("A1").Value = "=IF(Sheet1!B1=0,"",Sheet1!B1)"
 

Из-за двойных кавычек у меня возникают проблемы с вставкой строки. Как мне обрабатывать двойные кавычки?

Комментарии:

1. Не прямой ответ, но вы уверены в этой строке? Это циклическая ссылка, которая не начинается со знака равенства.

2. @JimmyPena Я думаю, что это, вероятно, просто пример кода. Я отправляю редактирование, независимо от

Ответ №1:

Я считаю, что самый простой способ — удвоить кавычки для обработки цитаты.

 Worksheets("Sheet1").Range("A1").Formula = "IF(Sheet1!A1=0,"""",Sheet1!A1)" 
 

Некоторым людям нравится использовать CHR(34)*:

 Worksheets("Sheet1").Range("A1").Formula = "IF(Sheet1!A1=0," amp; CHR(34) amp; CHR(34) amp; ",Sheet1!A1)" 
 

* Примечание: CHAR() используется как формула ячейки Excel, например, запись «= CHAR(34)» в ячейке, но для кода VBA вы используете функцию CHR() .

Комментарии:

1. Я предпочитаю создавать глобальную переменную: Public Const vbDoubleQuote Как String = «»»» ‘представляет 1 двойную кавычку («) Public Const vbSingleQuote Как String = «»» ‘представляет 1 одинарную кавычку (‘) и использовать ее следующим образом: Shell «explorer.exe » amp; vbDoubleQuote amp; sPath amp; vbDoubleQuote, vbNormalFocus

2. ответ @gicalle действительно аккуратный, он сводит всю путаницу «сколько одинарных и двойных кавычек» к одному определению, где это может быть задокументировано

3. Я использую множество глобальных определений во всех своих проектах VBA (когда у меня нет выбора в использовании чего-то другого, кроме VBA !!), Которые определяют все общие вещи, такие как возврат каретки, двойные кавычки и т.д.

Ответ №2:

Другой обходной путь — создать строку с временным символом замены. Затем вы можете использовать REPLACE, чтобы заменить каждый временный символ на двойную кавычку. Я использую тильду в качестве временного заменяющего символа.

Вот пример из проекта, над которым я работаю. Это небольшая утилита для исправления очень сложной формулы, если / когда на ячейку случайно наступают. Это сложная формула для ввода в ячейку, но эта небольшая утилита мгновенно исправляет ее.

 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
 

На самом деле это всего лишь простой программный трюк, но он упрощает ввод формулы в ваш код VBA.

Ответ №3:

Все двойные кавычки внутри двойных кавычек, которые окружают строку, должны быть изменены в два раза. В качестве примера у меня была одна из строк файла json: «delivery»: «Standard», в редакторе Vba я изменил ее на «delivery»: «Standard»», и все работает правильно. Если вам нужно вставить много похожих строк, мое предложение сначала вставьте их все между «» , затем с помощью редактора VBA замените «внутри» на «». Если вы сделаете ошибку, редактор VBA отобразит эту строку красным цветом, и вы исправите эту ошибку.

Ответ №4:

Я написал небольшую процедуру, которая копирует формулу из ячейки в буфер обмена, который можно легко вставить в редакторе Visual Basic.

     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) amp; Replace(ActiveCell.Formula, Chr(34), Chr(34) amp; Chr(34)) amp; 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
 

Первоначально он размещен на Chandoo.org Раздел хранилища форумов.

In my current VBA code, I have a query in which I am using Chr(34) to put quotation marks between some of my variables.

I was wondering what alternatives exist to this. This is a simple question, i know, but I haven’t had any success with repeating quotation marks like this

" & variable string here & "

My code is messy for one and not understandable for people who are not familiar with VBA:

comboService = Chr(34) & Me.Combo8.Value & Chr(34)

Also, this hasn’t worked:

comboService = """" & Me.Combo8.Value & """"

Can you perhaps tell me why?

Thanks in advance.

brettdj's user avatar

brettdj

54.6k16 gold badges113 silver badges176 bronze badges

asked Nov 28, 2012 at 0:29

Paolo Bernasconi's user avatar

Paolo BernasconiPaolo Bernasconi

2,00011 gold badges33 silver badges54 bronze badges

6

This:

comboService = """ & Me.Combo8.Value & """

is what you posted, but you need to add an extra quotation mark in order to add a literal quotation mark:

comboService = """" & Me.Combo8.Value & """"

Double-quotes within a string are what you are looking for.

aVar = "This: "" is a literal quotation mark"

answered Nov 28, 2012 at 1:09

transistor1's user avatar

I took a page from MS (the old vbCRLF) a while back, and just define any «tricky» characters I’ll need as a string at the top of my code …

Dim vbDblQuote As String
vbDblQuote = Chr(34)

Now you can just use that pseudo-constant as you build strings …

strMyString = "Just another string " & vbDblQuote & "with quotes" & vbDblQuote & "!"

This makes code more readable, and also helps avoid «miscounted quote errors»

Liam's user avatar

Liam

27k27 gold badges123 silver badges185 bronze badges

answered Feb 13, 2015 at 19:29

Grady Patterson's user avatar

0

I have found the same behavior if I output to a file using the Write command. Any double quotes get repeated.

However, if you construct the string and then output to file using the Print command, this does not happen and all works as expected.

Gary99's user avatar

Gary99

1,7501 gold badge20 silver badges33 bronze badges

answered Jun 6, 2017 at 19:55

John's user avatar

Понравилась статья? Поделить с друзьями:
  • Vba excel как вставить значение в ячейку
  • Vba excel как вставить дату
  • Vba excel как включить вкладку
  • Vba excel как включить 2019
  • Vba excel как включить 2016