Vba excel вставить кавычки
Originally posted by WildAn
VBA excel
Подскажите, как создать строковую переменную, которая объединяла(прибавляла) к переменной кавычки с двух сторон.
Т.е. к примеру
есть peremennaj=слово
нужно получить peremennaj_="слово"
Вариант 1
""" & переменная & """
Вариант 2
Chr(34) & переменная & chr(34)
Chr(34) = символ с кодом 34, тоесть кавычки. Таким образом вообще любой символ вставить можно, лишь бы в кодировке присутствовал.
Originally posted by mhaturov
Вариант 1
""" & переменная & """
Вариант 2
Chr(34) & переменная & chr(34)
Chr(34) = символ с кодом 34, тоесть кавычки. Таким образом вообще любой символ вставить можно, лишь бы в кодировке присутствовал.
Первый вариант дает неверный результат, а второй - то, что нужно
Благодарю
Sub Макрос1()
Dim s As String
For Each c In Selection
stri = stri & ";" & c.Value
Next c
s = Right(stri, Len(stri) - 1)
With Range("a1").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=s
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub
Sub Макрос9()
With Range("a1").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="bxcnv;sdfgsdf;sdfgsdfg"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub
Sub Макрос1()
Dim s As String
For Each c In Selection
stri = stri & ";" & c.Value
Next c
s = Right(stri, Len(stri) - 1)
With Range("a1").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=s
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub
Sub Макрос9()
With Range("a1").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="bxcnv;sdfgsdf;sdfgsdfg"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub
Второй макрос записан с помощью recorderа Однкако, если его запустить, то результат получится не тот, что при записи Почему?
В ситуациях, когда необходимо создать строки, которые необходимо сконструировать, может потребоваться встраить строку в другую строку или переменную строки в строку. Ситуации, в которых может потребоваться вложение одной строки в другую, включают следующие:
При указании критериев для совокупных функций домена.
При указании критериев для методов Find .
При указании критериев для свойства Filter или ServerFilter формы.
При создании SQL строк.
Во всех этих случаях Access должен передать строку в движок базы данных Access. Например, при указании аргумента критериев для агрегированной функции домена Access должен оценить все переменные, примитивировать их в строку, а затем передать всю строку в движок базы данных Access.
Если встраить числовую переменную, Access оценит переменную и просто соберет значение в строку. Однако если переменная является текстовой строкой, строка критериев будет содержать строку в строке. Строка в строке должна быть определена делемитерами строки. В противном случае движок базы данных Access не сможет определить, какая часть строки является тем значением, которое необходимо использовать.
Делемитеры строк фактически не являются частью самой переменной, но они должны быть включены в строку в аргументе критериев . Существует три различных способа построения строки в аргументе критериев . Каждый метод приводит к аргументу критериев , который выглядит как один из следующих примеров.
Включаем одиночные кавычка
В аргументе критериев следует включить отдельные кавычка таким образом, чтобы при одновременном вложении значения переменной в строку она была заключена в одну кавычка. Например, предположим, что аргумент критериев должен содержать переменную строки под названием strName . Аргумент критериев можно построить , как в следующем примере:
Когда переменная strName оценивается и соедается в строку критериев, строка критериев становится:
Этот синтаксис не позволяет использовать апострофы (') в значении самой переменной. Если значение переменной строки включает апостроф, access создает ошибку во время работы. Если переменная может представлять значения, содержащие апострофы, рассмотрите возможность использования одной из других форм синтаксиса, рассмотренных в следующих разделах.
Включаем двойные кавычка
Следует включить двойные кавычка в аргумент критериев таким образом, чтобы при оценке значения переменной она была заключена в кавычках. В строке для представления одного набора двойных кавычков необходимо использовать два набора двойных кавычков. Аргумент критериев можно построить , как в следующем примере:
Когда переменная strName оценивается и согласуется с аргументом критериев, каждый набор двух двойных кавычках заменяется одной одной кавычками. Аргумент критериев становится:
Этот синтаксис может показаться более сложным, чем синтаксис одной метки кавычка, но он позволяет встраивать строку, содержаную апостроф в аргументе критериев . Он также позволяет вложению одной или нескольких строк в встроенную строку.
Включаем переменную, представляющую кавычка
Можно создать переменную строки, представляюную двойные кавычка, и соединять эту переменную в аргумент критериев вместе со значением переменной. Представление ANSI для двойных кавычков Chr$(34) ; это значение можно назначить переменной строки под названием strQuote . Затем можно создать аргумент критериев , как в следующем примере:
Когда переменные оцениваются и согласуются с аргументом критериев, аргумент критериев становится:
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
в следующей таблице перечислены функции, которые Visual Basic предоставляет в Microsoft.VisualBasic.Strings классе для поиска и работы со строками. их можно рассматривать как Visual Basic встроенных функций, то есть нет необходимости вызывать их как явные члены класса, как показано в примерах. Дополнительные методы и в некоторых случаях дополняют методы, доступны в System.String классе.
Можно использовать инструкцию Option Compare , чтобы задать, сравниваются ли строки с использованием порядка сортировки текста без учета регистра, определенного языковым стандартом системы ( ) или внутренними двоичными представлениями символов ( Binary ). Метод сравнения текста по умолчанию — Binary .
Пример: Укасе
В данном примере функция UCase используется для возврата строки в верхнем регистре.
Пример: LTrim
В данном примере функция LTrim используется, чтобы убрать пробелы в начале, а функция RTrim — чтобы убрать пробелы в конце строковой переменной. Функция Trim в примере используется для удаления обоих типов пробелов.
Пример: mid
В этом примере функция используется Mid для возврата указанного числа символов из строки.
Пример: len
В данном примере Len используется для возврата числа знаков в строке.
Пример: InStr
В данном примере функция InStr используется для возврата позиции первого вхождения одной строки в другую.
Пример: Format
В данном примере показаны различные способы использования функции Format для форматирования значений с применением как форматов String , так и определенных пользователем форматов. Фактическое отображение системой разделителя даты ( / ), разделителя времени ( : и индикаторов AM/PM ( t и tt ) зависит от региональных параметров, применяемых кодом. При отображении времени и даты в среде разработки используется короткий формат времени и даты региональных установок кода.
Для языков, использующих 24-часовой формат, индикаторы AM/PM ( t и tt ) не отображаются.
Как я могу построить следующую строку в Формуле Excel:
Если я использую одинарные кавычки, это тривиально = "Maurice 'The Rocket' Richard" но как насчет двойных кавычек?
вы пытались убежать с двойной кавычкой?
кроме того, вы можете использовать CHAR функция:
три двойные кавычки: " " " x " " " = "x" Excel автоматически изменится на одну двойную кавычку. например:
Я использую функцию для этого (если книга уже есть в VBA).
это из книги Сью Мошер "Программирование Microsoft Outlook". Тогда ваша формула будет:
="Maurice "&Quote("Rocket")&" Richard"
Это похоже на то, что Дейв DuPlantis выложил.
в случае, если вам нужно сделать это с JSON:
использовать chr(34) Код: Джо = "Привет", & Chr (34) & " Джо " & Chr (34) И activecell.Value = Joe
результат: Привет, "Джо"
будет ли это работать для макросов с помощью .Formula = "=THEFORMULAFUNCTION("STUFF")" так было бы: будет ли это работать для макросов с помощью .Formula = "=THEFORMULAFUNCTION(CHAR(34) & STUFF & CHAR(34))"
листа текст смогите произвести такой же результат без использования кавычек.
на мой взгляд, используя TEXT(,) на месте "" очищает даже простую формулу, подобную приведенной выше. Преимущества становятся все более значимыми при использовании в более сложных формулах, таких как практика добавления пустой строки в VLOOKUP чтобы избежать возврата нуля в ячейку, когда поиск приводит к пустому или возвращению пустой строки при отсутствии совпадения с функции iferror.
С TEXT(,) замена старого "" метод доставки пустой строки, вы можете прекратить использовать счеты, чтобы определить, есть ли у вас правильное количество символов цитаты в строке формулы.
функция VBA
1) .Формула = " = ""THEFORMULAFUNCTION "" &(CHAR (34) & "STUFF "" & CHAR(34))"
2) .Formula = "THEFORMULAFUNCTION ""STUFF"""
первый метод использует vba для записи формулы в ячейку, которая приводит к вычисленному значению:
второй метод использует vba для записи строки в ячейку, которая приводит к значению:
Excel Результат / Формула
1) = "THEFORMULAFUNCTION" &(CHAR(34) & "STUFF" & CHAR (34))
2) THEFORMULAFUNCTION "STUFF"
есть другой способ, хотя больше для "как я могу построить следующую строку в Формуле Excel: "Морис" ракета "Ричард"", чем " как создать строки, содержащие двойные кавычки в формулах Excel? ", который просто использовать две одинарные кавычки:
слева-Калибр, вырезанный из листа Excel, а справа-обрезок из окна VBA. На мой взгляд, спасаясь как упомянул @YonahW выигрывает руки вниз но два один котировки не больше, чем два двойника, и разница разумно очевидна в VBA без дополнительных нажатий клавиш, в то время как потенциально не заметна в электронной таблице.
Я хочу вставить оператор if в ячейку через vba, который включает двойные кавычки.
Из-за двойных кавычек у меня возникают проблемы со вставкой строки. Как мне обрабатывать двойные кавычки?
Не прямой ответ, но уверены ли вы в этой строке? Это круговая ссылка, которая не начинается со знака равенства.
Я считаю, что самый простой способ - это удвоить кавычки, чтобы обработать цитату.
Некоторым нравится использовать CHR (34) *:
* Примечание: CHAR () используется в качестве формулы ячейки Excel, например, для записи в ячейке «= CHAR (34)», но для кода VBA вы используете функцию CHR ().
Я предпочитаю создавать глобальную переменную: Public Const vbDoubleQuote As String = "" "" 'представляет 1 двойную кавычку (") Public Const vbSingleQuote As String ="' "'представляет 1 одинарную кавычку (') и использует ее так: Shell" explorer.exe "& vbDoubleQuote & sPath & vbDoubleQuote, vbNormalFocus
Ответ @gicalle действительно изящный, он сводит всю путаницу «сколько одинарных и двойных кавычек» к одному определению, где это может быть задокументировано
Я использую множество глобальных определений во всех моих проектах VBA (когда у меня нет выбора в использовании чего-то другого, кроме VBA !!), которые определяют все общие вещи, такие как возврат каретки, двойные кавычки и т. Д.
Другой способ - создать строку с временным замещающим символом. Затем вы можете использовать REPLACE, чтобы заменить каждый временный символ двойными кавычками. Я использую тильду как временный замещающий символ.
Вот пример из проекта, над которым я работал. Это небольшая служебная программа для восстановления очень сложной формулы, если / когда на ячейку случайно наступят. Это сложная формула для ввода в ячейку, но эта небольшая утилита исправляет ее мгновенно.
На самом деле это простой трюк программирования, но он позволяет довольно легко ввести формулу в код VBA.
Читайте также: