Vba excel вставить кавычки

Обновлено: 06.07.2024

Еще можно через регулярные выражения, но я их не знаю.

Вариант

Через поиск справа налево и рекурсию:

Вариант

А ещё есть Split и Join

В верхний и в нижний регистр

Операции со строками

Таблица «Функции работы со строками»

  • ASC()— эта функция позволяет вернуть числовой код для переданного символа. Например, ASC( "D" ) вернет 68. Эту функцию удобно использовать для того, чтобы определить следующую или предыдущую букву. Обычно она используется вместе с функцией Chr(), которая производит обратную операцию — возвращает символ по переданному его числовому коду.Варианты этой функции — AscB() и AscW():
    • AscB() — возвращает только первый байт числового кода для символа.
    • AscW() — возвращает код для символа в кодировке Unicode

    В качестве второго параметра параметра могут применяться константы:

      • vbUpperCase: Преобразует все текстовые символы в ВЕРХНИЙ РЕГИСТР
      • vbLowerCase: Преобразует все текстовые символы в нижний регистр
      • vbProperCase: Переводит первый символ каждого слова в Верхний Регистр
      • *vbWide: Преобразует символы строки из однобайтовых в двухбайтовые
      • *vbNarrow: Преобразует символы строки из двухбайтовых в однобайтовые
      • **vbKatakana: Преобразует символы Hiragana в символы Katakana
      • **vbHiragana: Преобразует символы Katakana в символы Hiragana
      • ***vbUnicode: Преобразует строку в Юникод с помощью кодовой страницы системы по умолчанию
      • ***vbFromUnicode: Преобразует строку из Юникод в кодовую страницу системы по умолчанию

      Следующие три функции позволяют работать с массивом строк

      Split (<строка> [, <разделитель>]) – преобразует строку в массив подстрок. По умолчанию в качестве разделителя используется пробел. Данную функцию удобно использовать для разбиения предложения на слова. Однако можно указать в этой функции любой другой разделитель. Например, Split(3, «Этo тестовое предложение») возвращает массив из трех строковых значений: «Это», «тестовое», «предложение». Join (<массивСтрок> [, <разделитель>]) – преобразует массив строк в одну строку с указанным разделителем. Filter(<массивСтрок>, <строкаПоиск>[, <включение>] [, <сравнение>]) – просматривает массив строковых значений и ищет в нем все подстроки, совпадающие с заданной строкой. Эта функция имеет четыре аргумента: <строкаПоиск> – искомая строка; <включение> – параметр (булевское значение), который указывает, будут ли возвращаемые строки включать искомую подстроку или, наоборот, возвращаться будут только те строки массива, которые не содержат искомой строки в качестве подстроки; <сравнение> – параметр, определяющий метод сравнения строк. Еще три функции обеспечивают преобразование строк: LCase(<строка>) – преобразует все символы строки к нижнему регистру, например функция LCase(«ПОЧTA») возвращает строку «почта»; UCase(<строка>) – преобразует все символы строки к верхнему регистру; StrConv(<строка>, <преобразование>) – выполняет несколько типов преобразований строки в зависимости от второго параметра. Этот параметр описывается встроенными константами, например функция StrConv(«poccия», VbProperCase) возвращает значение «Россия».

      И последние две функции генерируют строки символов

      Space(<число>) – создает строку, состоящую из указанного числа пробелов; String(<число>, <символ>) – создает строку, состоящую из указанного в первом аргументе числа символов. Сам символ указывается во втором аргументе.

      Пример

      Технология выполнения

      • Откройте приложение Word, сохраните документ и перейдите в редактор VBA.
      • Создайте форму аналогично приведенному рисунку.
      • Пропишите обработчик события кнопки ОК.
      • Откомпилируйте программу.
      • Запустите форму на выполнение.
      Форма примера в режиме конструктора и в рабочем состоянии

      Задача

      А потом в цикле по всем словам ищешь(опять же в цикле. во вложенном) Добавлено через 23 минуты

      Добавлено через 15 минут А вот так будет искать по началу слова а выделять всё слово

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

      При указании критериев для совокупных функций домена.

      При указании критериев для методов Find.

      При указании критериев для свойства Filter или ServerFilter формы.

      При создании SQL строк.

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

      Если встраить числовую переменную, Access оценит переменную и просто соберет значение в строку. Однако если переменная является текстовой строкой, строка критериев будет содержать строку в строке. Строка в строке должна быть определена делемитерами строки. В противном случае движок базы данных Access не сможет определить, какая часть строки является тем значением, которое необходимо использовать.

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

      Включаем одиночные кавычка

      В аргументе критериев следует включить отдельные кавычка таким образом, чтобы при одновременном вложении значения переменной в строку она была заключена в одну кавычка. Например, предположим, что аргумент критериев должен содержать переменную строки под названием strName . Аргумент критериев можно построить, как в следующем примере:

      Когда strName переменная оценивается и соедается в строку критериев, строка критериев становится:

      Этот синтаксис не позволяет использовать апострофы (') в значении самой переменной. Если значение переменной строки включает апостроф, access создает ошибку во время работы. Если переменная может представлять значения, содержащие апострофы, рассмотрите возможность использования одной из других форм синтаксиса, рассмотренных в следующих разделах.

      Включаем двойные кавычка

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

      Когда переменная оценивается и согласуется с аргументом критериев, каждый набор двух двойных кавычках заменяется одной strName одной кавычками. Аргумент критериев становится:

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

      Включаем переменную, представляющую кавычка

      Можно создать переменную строки, представляюную двойные кавычка, и соединять эту переменную в аргумент критериев вместе со значением переменной. Представление ANSI для двойных кавычков ; это значение можно назначить Chr$(34) переменной строки под названием strQuote . Затем можно создать аргумент критериев, как в следующем примере:

      Когда переменные оцениваются и согласуются с аргументом критериев, аргумент критериев становится:

      Поддержка и обратная связь

      Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

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

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

      Не прямой ответ, но уверены ли вы в этой строке? Это круговая ссылка, которая не начинается со знака равенства. @JimmyPena Думаю, это просто пример кода. Я отправляю правку, несмотря ни на что

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

      Некоторым нравится использовать 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.

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

      в ячейку экселя вставляю пер-ую str
      str = "=ЕСЛИ(ДАТА(ГОД(ДАТАЗНАЧ(" + cur_year + "))+34;МЕСЯЦ(ДАТАЗНАЧ(" + cur_year + "));ДЕНЬ(ДАТАЗНАЧ(" + cur_year + ")))>B9;0.005*H9;1)"
      Задача: везде перед и после cur_year надо вставить кавычки ("). КАК? Помогите, пожалуйсто, очень надо.

      +(1) А че FormulaLocal пользуешь ? С проста Formula (0) не прокатит

      (1) на первый debug-взгляд помогает
      (2) А что она делает. Просто сегодня сказали НАДО. Вот я и сижу VBA ковыряю

      +(0) а как строку переносить по строкам, ну типа в 1С через | ,а тут как?

      Если будет типа такого
      thisworkbook.worksheets(1).cells(1,1).formula=str
      где str твоя строка(кстати str нельзя пользовать это зарезервировано-функция преобразования) то так строка и будет пока ячейку на редактирование не откроешь и не жмакнешь ентер, надо либо английский синтаксис либо .formulalocal

      У меня примерно вот так:
      cur_range.Offset(i, 0) = "=ЕСЛИ(ДАТА(ГОД(ДАТАЗНАЧ(""" + cur_year + """))+34;МЕСЯЦ(ДАТАЗНАЧ(""" + cur_year + """));ДЕНЬ(ДАТАЗНАЧ(""" + cur_year + """)))>B9;0.005*H9;1)"
      Это в цикле.
      Может как по умнее можно?

      +(7) это почему-то не прокатывает, хотя, если результирующую строку из debug вытаскиваю в формулу ячейки, то все ОК. Подскажите, где торможу?

      А что, во всех ячейках одно и тоже будет ?
      cur_year = "01.10.1996"
      Set myrange = Worksheets(1).Range("a9:a100")
      myrange.FormulaLocal = "=ЕСЛИ(ДАТА(ГОД(ДАТАЗНАЧ(""" + cur_year + """))+34;МЕСЯЦ(ДАТАЗНАЧ(""" + cur_year + """));ДЕНЬ(ДАТАЗНАЧ(""" + cur_year + """)))>B9;0,005*H9;1)"

      (10) Там будут так же менятся B9 и H9 (типа также как и cur_year)

      (0) if <cur_year as String> then
      . ДАТАЗНАЧ(" + """+cur_year +"""+ ")).
      else
      . ДАТАЗНАЧ(" + """+CStr(cur_year) +"""+ ")).
      endif

      (12) Это будет меняться B9 и H9 в (10) счас глянем чтобы кур_яр менять за раз

      (16) так мне для разных ячеек нужны разные кур_яры B9 bи и H9

      ii = sh.Cells.SpecialCells(xlLastCell).Row
      jj = sh.Cells.SpecialCells(xlLastCell).Column

      а чтобы менять "зараз" явно используй диапазон адресов в Range: sh.Range("A1:M100").Formula.

      (17) Дак ты не спрашивай а посмотри что будет в (10) счас и с годом сообразим

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


      Как использовать двойные кавычки в формулах Excel?

      Общая формула

      =CHAR(34)&cell&CHAR(34)

      Есть два способа использовать двойные кавычки в формулах. Они есть:

      • 1. Без функции: Заключать текст в двойные кавычки напрямую.
      • 2. С функцией: Отображение двойных кавычек с помощью функции CHAR (34).

      Как показано в приведенном ниже примере, D7 содержит следующую формулу:

      И возвращает результат: Полезный инструмент для «Excel».


      Ноты:


      • 1. В этом случае текст в C5 заключен в двойные кавычки (""). Вы можете обернуть текст в любую ячейку с помощью приведенной ниже формулы.
      • =""""&cell&""""
      • """" : 1-я и 4-я кавычки сообщают Excel, что это текст, а 2-я кавычка указывает Excel избегать следующей 3-й двойной кавычки и воспринимать ее как буквальный текст. Вот результат """"&C5&"""" это «Excel».
      • 2. Кроме того, вы можете использовать функцию СИМВОЛ для вставки двойных кавычек в формулу. См. Формулу ниже:
      • ="A useful "&B5&" for "&CHAR(34)&C5&CHAR(34)
      • Функция CHAR (34) возвращает двойные кавычки (") и отображается как буквальный текст в ячейке.

      Лучшие инструменты для работы в офисе

      Kutools for Excel - поможет вам выделиться из толпы

      Хотите быстро и безупречно выполнять свою повседневную работу? Kutools for Excel предлагает мощные расширенные функции 300 (объединение книг, сумма по цвету, разделение содержимого ячеек, дата преобразования и так далее . ) и экономия 80% времени для вас.

      Читайте также: