Работа с текстом в коде VBA Excel. Функции, оператор &
и другие ключевые слова для работы с текстом. Примеры использования некоторых функций и ключевых слов.
Функции для работы с текстом
Основные функции для работы с текстом в VBA Excel:
Функция | Описание |
---|---|
Asc(строка) | Возвращает числовой код символа, соответствующий первому символу строки. Например: MsgBox Asc(«/Stop»). Ответ: 47, что соответствует символу «/». |
Chr(код символа) | Возвращает строковый символ по указанному коду. Например: MsgBox Chr(47). Ответ: «/». |
Format(Expression, [FormatExpression], [FirstDayOfWeek], [FirstWeekOfYear]) | Преобразует число, дату, время в строку (тип данных Variant (String)), отформатированную в соответствии с инструкциями, включенными в выражение формата. Подробнее… |
InStr([начало], строка1, строка2, [сравнение]) | Возвращает порядковый номер символа, соответствующий первому вхождению одной строки (строка2) в другую (строка1) с начала строки. Подробнее… |
InstrRev(строка1, строка2, [начало, [сравнение]]) | Возвращает порядковый номер символа, соответствующий первому вхождению одной строки (строка2) в другую (строка1) с конца строки. Подробнее… |
Join(SourceArray,[Delimiter]) | Возвращает строку, созданную путем объединения нескольких подстрок из массива. Подробнее… |
LCase(строка) | Преобразует буквенные символы строки в нижний регистр. |
Left(строка, длина) | Возвращает левую часть строки с заданным количеством символов. Подробнее… |
Len(строка) | Возвращает число символов, содержащихся в строке. |
LTrim(строка) | Возвращает строку без начальных пробелов (слева). Подробнее… |
Mid(строка, начало, [длина]) | Возвращает часть строки с заданным количеством символов, начиная с указанного символа (по номеру). Подробнее… |
Replace(expression, find, replace, [start], [count], [compare]) | Возвращает строку, полученную в результате замены одной подстроки в исходном строковом выражении другой подстрокой указанное количество раз. Подробнее… |
Right(строка, длина) | Возвращает правую часть строки с заданным количеством символов. Подробнее… |
RTrim(строка) | Возвращает строку без конечных пробелов (справа). Подробнее… |
Space(число) | Возвращает строку, состоящую из указанного числа пробелов. Подробнее… |
Split(Expression,[Delimiter],[Limit],[Compare]) | Возвращает одномерный массив подстрок, извлеченных из указанной строки с разделителями. Подробнее… |
StrComp(строка1, строка2, [сравнение]) | Возвращает числовое значение Variant (Integer), показывающее результат сравнения двух строк. Подробнее… |
StrConv(string, conversion) | Изменяет регистр символов исходной строки в соответствии с заданным параметром «conversion». Подробнее… |
String(число, символ) | Возвращает строку, состоящую из указанного числа символов. В выражении «символ» может быть указан кодом символа или строкой, первый символ которой будет использован в качестве параметра «символ». Подробнее… |
StrReverse(строка) | Возвращает строку с обратным порядком следования знаков по сравнению с исходной строкой. Подробнее… |
Trim(строка) | Возвращает строку без начальных (слева) и конечных (справа) пробелов. Подробнее… |
UCase(строка) | Преобразует буквенные символы строки в верхний регистр. |
Val(строка) | Возвращает символы, распознанные как цифры с начала строки и до первого нецифрового символа, в виде числового значения соответствующего типа. Подробнее… |
WorksheetFunction.Trim(строка) | Функция рабочего листа, которая удаляет все лишние пробелы (начальные, конечные и внутренние), оставляя внутри строки одиночные пробелы. |
В таблице перечислены основные функции VBA Excel для работы с текстом. С полным списком всевозможных функций вы можете ознакомиться на сайте разработчика.
Ключевые слова для работы с текстом
Ключевое слово | Описание |
---|---|
& | Оператор & объединяет два выражения (результат = выражение1 & выражение2). Если выражение не является строкой, оно преобразуется в Variant (String), и результат возвращает значение Variant (String). Если оба выражения возвращают строку, результат возвращает значение String. |
vbCrLf | Константа vbCrLf сочетает в себе возврат каретки и перевод строки (Chr(13) + Chr(10)) и переносит последующий текст на новую строку (результат = строка1 & vbCrLf & строка2). |
vbNewLine | Константа vbNewLine в VBA Excel аналогична константе vbCrLf, также сочетает в себе возврат каретки и перевод строки (Chr(13) + Chr(10)) и переносит текст на новую строку (результат = строка1 & vbNewLine & строка2). |
Примеры
Вывод прямых парных кавычек
Прямые парные кавычки в VBA Excel являются спецсимволами и вывести их, заключив в самих себя или в одинарные кавычки (апострофы), невозможно. Для этого подойдет функция Chr:
Sub Primer1() ‘Вывод одной прямой парной кавычки MsgBox Chr(34) ‘Отображение текста в прямых кавычках MsgBox Chr(34) & «Волга» & Chr(34) ‘Вывод 10 прямых парных кавычек подряд MsgBox String(10, Chr(34)) End Sub |
Смотрите интересное решение по выводу прямых кавычек с помощью прямых кавычек в первом комментарии.
Отображение слов наоборот
Преобразование слова «налим» в «Милан»:
Sub Primer2() Dim stroka stroka = «налим» stroka = StrReverse(stroka) ‘милан stroka = StrConv(stroka, 3) ‘Милан MsgBox stroka End Sub |
или одной строкой:
Sub Primer3() MsgBox StrConv(StrReverse(«налим»), 3) End Sub |
Преобразование слова «лето» в «отель»:
Sub Primer4() Dim stroka stroka = «лето» stroka = StrReverse(stroka) ‘отел stroka = stroka & «ь» ‘отель MsgBox stroka End Sub |
или одной строкой:
Sub Primer5() MsgBox StrReverse(«лето») & «ь» End Sub |
Печатная машинка
Следующий код VBA Excel в замедленном режиме посимвольно печатает указанную строку на пользовательской форме, имитируя печатную машинку.
Для реализации этого примера понадобится пользовательская форма (UserForm1) с надписью (Label1) и кнопкой (CommandButton1):
Код имитации печатной машинки состоит из двух процедур, первая из которых замедляет выполнение второй, создавая паузу перед отображением очередного символа, что и создает эффект печатающей машинки:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Sub StopSub(Pause As Single) Dim Start As Single Start = Timer Do While Timer < Start + Pause DoEvents Loop End Sub Private Sub CommandButton1_Click() Dim stroka As String, i As Byte stroka = «Печатная машинка!» Label1.Caption = «» For i = 1 To Len(stroka) Call StopSub(0.25) ‘пауза в секундах ‘следующая строка кода добавляет очередную букву Label1.Caption = Label1.Caption & Mid(stroka, i, 1) Next End Sub |
Обе процедуры размещаются в модуле формы. Нажатие кнопки CommandButton1 запустит замедленную печать символов в поле надписи, имитируя печатную машинку.
Здравствуйте, уважаемые форумчане! |
|
vikttur Пользователь Сообщений: 47199 |
Хватит слезы проливать , рисуйте пример |
JayBhagavan Пользователь Сообщений: 11833 ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64 |
suricat555, насколько я понимаю, то Вы, скорее всего, используете «Formula», а надо «FormulaLocal». <#0> |
suricat555 Пользователь Сообщений: 132 |
#4 11.07.2021 19:48:23 Вот мой образец.
Прикрепленные файлы
Изменено: suricat555 — 11.07.2021 20:13:58 |
||
Mershik Пользователь Сообщений: 8277 |
suricat555, а вы уверены что это хороший Вариант ? может стоит весь расчет делать в макросе и показывать результат…какой конечный результат должен быть? Изменено: Mershik — 11.07.2021 20:15:19 Не бойтесь совершенства. Вам его не достичь. |
Mershik, мне нужно получить вот такую запись =ЛЕВСИМВ(A4*B4;1) в ячейках столбца C. |
|
Mershik Пользователь Сообщений: 8277 |
#7 11.07.2021 20:19:00 suricat555,
Изменено: Mershik — 11.07.2021 20:19:16 Не бойтесь совершенства. Вам его не достичь. |
||||
suricat555 Пользователь Сообщений: 132 |
#8 11.07.2021 20:24:09 Mershik, спасибо большое! Я исправила свой макрос, добавила FormulaLocal JayBhagavan, вы мне тоже об этом говорили, но я не поняла, куда вставить это надо. Спасибо!
Изменено: vikttur — 11.07.2021 21:18:47 |
||
msi2102 Пользователь Сообщений: 3137 |
#9 12.07.2021 07:49:59 УПС не то, удалять не буду вдруг пригодится Прикрепленные файлы
Изменено: msi2102 — 12.07.2021 07:58:57 |
Содержание
- 0.1 удалить из строки знак » и знак =
- 0.1.1 Вариант1
- 0.1.2 Вариант
- 0.1.3 Вариант
- 0.1.4 Вариант
- 0.1.5 Вариант
- 0.1.6 Вариант
- 0.1.7 В верхний и в нижний регистр
- 0.2 Операции со строками
- 0.3 Таблица «Функции работы со строками»
- 0.4 Следующие три функции позволяют работать с массивом строк
- 0.5 И последние две функции генерируют строки символов
- 0.6 Пример
- 0.6.1 Технология выполнения
- 0.7 Задача
- 1 How to: Match a String against a Pattern (Visual Basic)
-
- 1.0.1 Проверка символа
- 1.0.2 ? — один любой символ
- 1.0.3 Любой символ из списка [abc] и диапазона [a-c]
- 1.0.4 Символ из списка или отсутствие символа
-
- 2 Функция InStr
- 2.1 Примеры
удалить из строки знак » и знак =
(http://www.cyberforum.ru/vba/thread638743.html)
Вариант1
strW= (="КОРОТЕЕВ ДМИТРИЙ ВЛАДИМИРОВИЧ") strB=Replace(Replace(strW, Chr(61), ""), Chr(34), "")
Вариант
Можно еще через байтовый массив:
Sub n() Dim Mass() As Byte, n As Long, Zam As String, TXT As String TXT = "=""КОРОТЕЕВ ДМИТРИЙ ВЛАДИМИРОВИЧ" Mass = StrConv(TXT, vbFromUnicode) For n = 0 To UBound(Mass) If Mass(n) <> 34 And Mass(n) <> 61 Then Zam = Zam + Chr$(Mass(n)) Next MsgBox Zam End Sub
Вариант
Или фильтрацию мидом:
Sub nn() Dim n As Long, TXT As String, L As String, Zam As String TXT = "=""КОРОТЕЕВ ДМИТРИЙ ВЛАДИМИРОВИЧ" For n = 1 To Len(TXT) L = Mid$(TXT, n, 1) If L <> """" And L <> "=" Then Zam = Zam + L Next MsgBox Zam End Sub
Строку 6 можно заменить лайкой:
Код Visual Basic
1
If L Like «[!»»=]» Then Zam = Zam + L
Вариант
Еще через поиск позиции и рекурсию:
Sub test() Dim n As Long, txt As String txt = "=""КОРОТЕЕВ ДМИТРИЙ ВЛАДИМИРОВИЧ" txt = Change(txt, "=") txt = Change(txt, """") MsgBox txt End Sub Function Change(txt As String, What As String, Optional Pos = 1) Dim n As Long If Pos <> 0 Then n = InStr(Pos, txt, What) Change = Mid$(txt, Pos, IIf(n - Pos < 0, Len(txt), n - Pos)) + Change(txt, What, IIf(n = 0, 0, n + 1)) End If End Function
Еще можно через регулярные выражения, но я их не знаю.
Вариант
Через поиск справа налево и рекурсию:
Код Visual Basic | ||
|
Вариант
А ещё есть Split и Join
strb = Join(Split(Join(Split(strW, "="), ""), """"), "")
Не по теме:Но это для садистов
В верхний и в нижний регистр
With ActiveDocument.Range 'верхних регистр .Text = Ucase(.Text) 'нижний регистр .Text = Lcase(.Text) End With
или StrConv() — преобразовать строку (в Unicode и обратно, в верхний и нижний регистр, сделать первую букву слов заглавной и т.п.) — см. ниже
Операции со строками
Для данных типа String существует только одна операция – конкатенация (объединение). Например, результатом операции конкатенации трех строковых значений «Петр» & » » & «Иванович» будет строка «Петр Иванович». Возможно также использование другого оператора для операции конкатенации, например: «десяти» + «тысячник». Разница между этими выражениями состоит в том, что в первом случае операндами могут быть значения любого типа (они просто будут преобразовываться в строковые), а во втором – оба операнда должны иметь тип String. Для работы со строками существует большое количество функций (таблица. Функции работы со строками).
Таблица «Функции работы со строками»
Функция | Описание | Пример |
---|---|---|
Len(str) | Определяет длину строки | Из а=lеn(«Персонажи») следует а=9 |
Left (<строка>, <длина>) | Выделяет из аргумента <строка> указанное количество символов слева | Left(» 1234string», 4) =»1234″ |
Right(<строка>, <длина>) | Выделяет из аргумента <строка> указанное количество символов справа | Right(» 1234string», 6) =»string» |
Mid(<строка>, <старт> [, <длина>]) | Выделяет из аргумента <строка> подстроку с указанным числом символов, начиная с позиции <старт> | Mid («12345678″, 4.3) =»456» |
Mid(<строка>, <старт>) | Выделяется подстрока от позиции <старт> до конца строки | Mid («12345678″, 4) =»45678» |
LTrim (<строка>) | Удаляет пробелы в начале строки | LTrim(» печать») =»печать» |
RTrim (<строка>) | Удаляет пробелы в конце строки | RTrim(«печать «) =»печать» |
Trim (<строка>) | Удаляет пробелы в начале и в конце строки | Trim(» печать «) =»печать» |
InStr([<старт>, ] < строка1>, <строка2> [, <сравнение>]) | Производит поиск подстроки в строке. Возвращает позицию первого вхождения строки <строка2> в строку <строка1>, <старт> — позиция, с которой начинается поиск. Если этот аргумент пропущен, поиск начинается с начала строки | Instr(«C:Temp test.mdb», «Test»)=9 Если искомая строка не находится в указанной строке, функция возвращает 0 |
InStrRev ([<старт>, ] <строка1>, <строка2> [, <сравнение>]) | Ищет подстроку в строке, но начинает поиск с конца строки и возвращает позицию последнего вхождения подстроки. Необязательный аргумент <сравнение> определяет тип сравнения двух строк | |
Replace (<строка>, <строкаПоиск>, <строкаЗамена>) | Позволяет заменить в строке одну подстроку другой. Эта функция ищет все вхождения аргумента <строкаПоиск> в аргументе <строка> и заменяет их на <строкаЗамена> |
Для сравнения строковых значений можно использовать обычные операторы сравнения числовых значений, так как при сравнении символов сравниваются их двоичные коды. Для сравнения строковых значений также применяется оператор Like, который позволяет обнаруживать неточное совпадение, например выражение «Входной сигнал» Like «Вход*» будет иметь значение True, так как сравниваемая строка начинается со слова «Вход». Символ звездочка (*) в строке заменяет произвольное число символов. Другие символы, которые обрабатываются оператором Like в сравниваемой строке:
- ? – любой символ (один);
- #– одна цифра (0–9);
- [<список>] – символ, совпадающий с одним из символов списка;
- [!<список>] – символ, не совпадающий ни с одним из символов списка.
- ASC()— эта функция позволяет вернуть числовой код для переданного символа. Например, ASC(
"D"
) вернет 68. Эту функцию удобно использовать для того, чтобы определить следующую или предыдущую букву. Обычно она используется вместе с функцией Chr(), которая производит обратную операцию — возвращает символ по переданному его числовому коду.Варианты этой функции — AscB() и AscW():- AscB() — возвращает только первый байт числового кода для символа.
- AscW() — возвращает код для символа в кодировке Unicode
- Chr() — возвращает символ по его числовому коду. Может использоваться в паре с функцией Asc(), но чаще всего её применяют, когда нужно вывести служебный символ (например кавычки —
"
), т.к. кавычки просто так в VBA-коде не ввести(нужно ставить двойные). Я обычно именно эту функцию и использую.Dim sWord As String sWord = Chr(34) & "Слово в кавычках" & Chr(34)
Есть варианты этой функции — ChrB() и ChrW(). Работают аналогично таким же вариантам для функции Asc().
- InStr() и InStrRev()— одна из самых популярных функций. Позволяет обнаружить в теле строковой переменной символ или последовательность символов и вернуть их позицию. Если последовательность не обнаружена, то возвращается 0.
Dim sStr As String sStr = "w" If InStr(1, "Hello, World!", sStr, vbTextCompare) > 0 Then MsgBox "Искомое слово присутсвует!" Else MsgBox "Искомое слово отсутсвует!" End If
Разница функций в том, что InStr() ищет указанное слово от начала строки, а InStrRev() с конца строки
- Left(), Right(), Mid()— возможность взять указанное вами количество символов из существующей строковой переменной слева, справа или из середины соответственно.
Dim sStr As String sStr = "Hello, World!" MsgBox Mid(sStr, 1, 5)
- Len() — возможность получить число символов в строке. Часто используется с циклами, операциями замены и т.п.
- LCase() и UCase() — перевести строку в нижний и верхний регистры соответственно. Часто используется для подготовки значения к сравнению, когда при сравнении регистр не важен (фамилии, названия фирм, городов и т.п.).
- LSet() и RSet() — возможность заполнить одну переменную символами другой без изменения ее длины (соответственно слева и справа). Лишние символы обрезаются, на место недостающих подставляются пробелы.
- LTrim(), RTrim(), Trim() — возможность убрать пробелы соответственно слева, справа или и слева, и справа.
- Replace()— возможность заменить в строке одну последовательность символов на другую.
Dim sStr As String sStr = "Hello, World!" MsgBox Replace(sStr, "Hello", "Bay")
- Space() — получить строку из указанного вами количества пробелов;
Еще одна похожая функция — Spc(), которая используется для форматирования вывода на консоль. Она размножает пробелы с учетом ширины командной строки. - StrComp() — возможность сравнить две строки.
- StrConv() — возможность преобразовать строку (в Unicode и обратно, в верхний и нижний регистр, сделать первую букву слов заглавной и т.п.):
Dim sStr As String sStr = "Hello, World!" MsgBox StrConv("Hello, World!", vbUpperCase)
В качестве второго параметра параметра могут применяться константы:
- vbUpperCase: Преобразует все текстовые символы в ВЕРХНИЙ РЕГИСТР
- vbLowerCase: Преобразует все текстовые символы в нижний регистр
- vbProperCase: Переводит первый символ каждого слова в Верхний Регистр
- *vbWide: Преобразует символы строки из однобайтовых в двухбайтовые
- *vbNarrow: Преобразует символы строки из двухбайтовых в однобайтовые
- **vbKatakana: Преобразует символы Hiragana в символы Katakana
- **vbHiragana: Преобразует символы Katakana в символы Hiragana
- ***vbUnicode: Преобразует строку в Юникод с помощью кодовой страницы системы по умолчанию
- ***vbFromUnicode: Преобразует строку из Юникод в кодовую страницу системы по умолчанию
* применимо для локализаций Дальнего востока
** применимо только для Японии
*** не поддерживается операционными системами под управлением Macintosh - StrReverse() — «перевернуть» строку, разместив ее символы в обратном порядке. Функция работатет только начиная от Excel 2000 и выше. Пример использования функции, а так же иные методы переворачивания слова можно посмотреть в этой статье: Как перевернуть слово?
- Tab() — еще одна функция, которая используется для форматирования вывода на консоль. Размножает символы табуляции в том количестве, в котором вы укажете. Если никакое количество не указано, просто вставляет символ табуляции. Для вставки символа табуляции в строковое значение можно также использовать константу vbTab.
- String() — позволяет получить строку из указанного количества символов(которые опять-таки указываются Вами). Обычно используются для форматирования вывода совместно с функцией Len().
Следующие три функции позволяют работать с массивом строк
Split (<строка> [, <разделитель>]) – преобразует строку в массив подстрок. По умолчанию в качестве разделителя используется пробел. Данную функцию удобно использовать для разбиения предложения на слова. Однако можно указать в этой функции любой другой разделитель. Например, Split(3, «Этo тестовое предложение») возвращает массив из трех строковых значений: «Это», «тестовое», «предложение». Join (<массивСтрок> [, <разделитель>]) – преобразует массив строк в одну строку с указанным разделителем. Filter(<массивСтрок>, <строкаПоиск>[, <включение>] [, <сравнение>]) – просматривает массив строковых значений и ищет в нем все подстроки, совпадающие с заданной строкой. Эта функция имеет четыре аргумента: <строкаПоиск> – искомая строка; <включение> – параметр (булевское значение), который указывает, будут ли возвращаемые строки включать искомую подстроку или, наоборот, возвращаться будут только те строки массива, которые не содержат искомой строки в качестве подстроки; <сравнение> – параметр, определяющий метод сравнения строк. Еще три функции обеспечивают преобразование строк: LCase(<строка>) – преобразует все символы строки к нижнему регистру, например функция LCase(«ПОЧTA») возвращает строку «почта»; UCase(<строка>) – преобразует все символы строки к верхнему регистру; StrConv(<строка>, <преобразование>) – выполняет несколько типов преобразований строки в зависимости от второго параметра. Этот параметр описывается встроенными константами, например функция StrConv(«poccия», VbProperCase) возвращает значение «Россия».
И последние две функции генерируют строки символов
Space(<число>) – создает строку, состоящую из указанного числа пробелов; String(<число>, <символ>) – создает строку, состоящую из указанного в первом аргументе числа символов. Сам символ указывается во втором аргументе.
Пример
Создать программу, работающую со строковыми переменными. Для этого создать форму, в метки которой выходят следующие сообщения: 1 метка: сообщается длина строки, введенной в первое текстовое поле (1 строка); 2 метка: преобразует все символы третьего текстового поля (3 строка) в заглавные буквы; 3 метка: выводит вместе содержание первого и второго текстовых полей (1 и 2 строки).
Технология выполнения
- Откройте приложение Word, сохраните документ и перейдите в редактор VBA.
- Создайте форму аналогично приведенному рисунку.
- Пропишите обработчик события кнопки ОК.
- Откомпилируйте программу.
- Запустите форму на выполнение.
Форма примера в режиме конструктора и в рабочем состоянии
Private Sub CommandButton1_Click() Dim a As String Dim b As String Dim c As String Dim k As String Dim d As String Dim n As Integer a=TextBox1.Text n=Len(a) Label7.Caption=«длина первой строки равна» & n & « символам» c=TextBox3.Text k=Ucase(с) Label8.Caption=k b=TextBox2.Text d=a + » » + b Label9.Caption=d End Sub
Задача
Нужно, что бы в экселе в ячейке А1 выполнялся поиск слов, записанных через запятую в столбец А2, а результат, и найденные слова, с числом их повторений (если такое возможно) в искомом тексте, записались в другую, третью, ячейку. (ещё лучше бы было, если б они выделялись (ну или подчеркивались) каким ни будь образом в первой ячейке…что бы их сразу видно было Вот так загоняешь в массив слова:
Код Visual Basic | ||
|
А потом в цикле по всем словам ищешь(опять же в цикле. во вложенном) Добавлено через 23 минуты
Код Visual Basic | ||
|
Добавлено через 15 минутА вот так будет искать по началу слова а выделять всё слово
Код Visual Basic | ||
|
Можно сделать что бы искало и не с начала слова, а по части слова. — добавить ещё один цикл Do-Loop. Только смещать начало(ST) влево до пробела (http://www.cyberforum.ru/vba/thread567588.html)
How to: Match a String against a Pattern (Visual Basic)
- Некоторые символы нужно заключать в квадратные скобки ([ ]). см. Like Operator (Visual Basic).myString состоит из единственного символа H:
Dim sMatch As Boolean = myString Like "H"
? — один любой символ
- myString состоит из символа W, за которым следуют 2 любых символа
Dim sMatch As Boolean = myString Like "W??"
Любой символ из списка [abc] и диапазона [a-c]
Любой символ и затем один из символов A, C или E
-
Dim sMatch As Boolean = myString Like "?[ACE]" учитывается регистр символов
- myString = символы num и затем один символ из диапазона: i, j, k, l, m или n:
Dim sMatch As Boolean = myString Like "num[i-m]"
учитывается регистр символов
Like работает с [] как с о строковым массивом нулевой длины string («»). [] позволяет проверить, что строка является пустой
Символ из списка или отсутствие символа
- Оператор Like используется дважды, и результаты объединяются с помощью оператора Or Operator (Visual Basic) или OrElse Operator (Visual Basic).
- В шаблон первого оператора вставьте список символов в квадратных скобках ([ ]).
- В шаблон второго оператора в место проверки не помещайте ничегоПример: проверка семизначного номера телефона phoneNum, который должен содержать точно три цифры, после которых следует пробел, дефис точка или никакого символа и затем четыре цифры. (первые три цифры могут быть не отделены от четырех последних — «никакого символа»)
Dim sMatch As Boolean = (phoneNum Like "###[ -.]####") OrElse (phoneNum Like "#######")
Функция InStr
Данная функция возвращает значение типа Variant (Long), определяющее положение первого вхождения одной строки в другую.
См. примеры
Синтаксис
InStr([начальная_позиция, ] строка_1, строка_2 [, тип_сравнения ] )
Функция InStr имеет следующие аргументы:
АРГУМЕНТ | ОПИСАНИЕ |
---|---|
начальная_позиция | Необязательный. Числовое выражение, которое задает начальную позицию для поиска. Если этот аргумент опущен, поиск начинается с первого знака. Если аргумент начальная_позиция содержит значение Null, возникает ошибка. Если задан аргумент тип_сравнения, аргумент начальная_позиция является обязательным. |
строка_1 | Обязательный. Строковое выражение, по которому выполняется поиск. |
строка_2 | Обязательный. Искомое строковое выражение. |
тип_сравнения | Необязательный. Определяет тип сравнения строк. Если значением аргументатип_сравнения является Null, возникает ошибка. Если аргумент тип_сравненияопущен, тип сравнения определяется параметром Значение Сравнение. Укажите допустимый параметр LCID (LocaleID) для использования правил сравнения, заданных в языковых параметрах. |
Параметры
Аргумент тип_сравнения использует следующие параметры:
КОНСТАНТА | ЗНАЧЕНИЕ | ОПИСАНИЕ |
---|---|---|
vbUseCompareOption | -1 | Выполняется сравнение с помощью параметра инструкцииOption Compare. |
vbBinaryCompare | 0 | Выполняется двоичное сравнение. |
vbTextCompare | 1 | Выполняется текстовое сравнение. |
vbDatabaseCompare | 2 | Только в Microsoft Office Access 2007. Выполняется сравнение на основе сведений из базы данных. |
Возвращаемые значения
ЕСЛИ | ФУНКЦИЕЙ INSTR ВОЗВРАЩАЕТСЯ |
---|---|
строка_1 является пустой | 0 |
значением аргумента строка_1 является Null | Null |
строка_2 является пустой | начальная_позиция |
значением аргумента строка_2 является Null | Null |
строка_2 не найдена | 0 |
строка из аргумента строка_2 найдена в строке из аргументастрока_1 | Позиция найденного соответствия |
начальная_позиция > строка_2 | 0 |
Замечания
Функция InStrB используется с байтовыми данными, содержащимися в строке. Функция InStrB возвращает позицию байта, а не позицию знака первого вхождения одной строки в другую.
Примеры
Использование функции InStr в выражении Каждый раз при использовании выражений можно использовать функцию InStr. Например, если требуется определить позицию первой точки (.) в поле, которое содержит IP-адрес (названное «IPAddress»), можно использовать функцию InStr для его поиска:
InStr(1,[IPAddress],».»)
Функция InStr рассматривает каждое значение в поле «IPAddress» и возвращает позицию первой точки. Следовательно, если значение первого октета IP-адреса равно 10., функция возвращает значение 3.
Можно использовать другие функции, использующие результат функции InStr, для извлечения значения октета IP-адреса, который предшествует первой точке, например:
Left([IPAddress],(InStr(1,[IPAddress],».»)-1))
В этом примере функция InStr(1,[IPAddress],».») возвращает позицию первой точки. В результате вычитания 1 определяется количество знаков, предшествующих первой точке, в данном случае — 2. Затем функция Left извлекает эти символы с левой части поля «IPAddress», возвращая значение 10.
Использование функции InStr в коде Visual Basic для приложений (VBA)
ПРИМЕЧАНИЕ. Приведенные ниже примеры иллюстрируют использование возможностей модуля Visual Basic for Applications (VBA). Чтобы получить дополнительные сведения о работе с VBA, выберите пунктСправочник разработчика в раскрывающемся списке рядом с кнопкой Поиск, а затем введите один или несколько ключевых слов в поле поиска.
В данном примере функция InStr используется для получения позиции первого вхождения одной строки в другую.
Dim SearchString, SearchChar, MyPos SearchString ="XXpXXpXXPXXP" ' String to search in. SearchChar = "P" ' Search for "P". ' A textual comparison starting at position 4. Returns 6. MyPos = Instr(4, SearchString, SearchChar, 1) ' A binary comparison starting at position 1. Returns 9. MyPos = Instr(1, SearchString, SearchChar, 0) ' Comparison is binary by default ' (last argument is omitted). MyPos = Instr(SearchString, SearchChar) ' Returns 9. MyPos = Instr(1, SearchString, "W") ' Returns 0.
ccc
Содержание
- Основы работы со строками в Visual Basic
- Строковые переменные
- Символы в строках
- Неизменность строк
- Строки в VBA
- удалить из строки знак » и знак =
- Вариант1
- Вариант
- Вариант
- Вариант
- Вариант
- Вариант
- В верхний и в нижний регистр
- Операции со строками
- Таблица «Функции работы со строками»
- Следующие три функции позволяют работать с массивом строк
- И последние две функции генерируют строки символов
- Пример
- Технология выполнения
- Задача
- How to: Match a String against a Pattern (Visual Basic)
Основы работы со строками в Visual Basic
Тип данных String представляет последовательность символов (каждый из которых, в свою очередь, представляет экземпляр типа данных Char ). В этом разделе представлены основные понятия строк в Visual Basic.
Строковые переменные
Экземпляру строки можно назначить литеральное значение, которое представляет ряд символов. Например:
Переменная String также может принимать любое выражение, результатом которого является строка. Ниже приведены примеры.
Любой литерал, который присваивается переменной String , должен быть заключен в кавычки («»). Это означает, что кавычки в пределах строки не могут быть представлены кавычкой. Например, следующий код вызовет ошибку компиляции:
Этот код вызывает ошибку, так как компилятор завершает строку после второй пары кавычек, а остаток строки интерпретируется как код. Чтобы решить эту проблему, Visual Basic интерпретирует две кавычки в строковом литерале как одну кавычку в строке. В следующем примере показан правильный способ указания кавычек в строке:
В предыдущем примере два символа кавычек перед словом Look становятся одним символом кавычек в строке. Три символа кавычек в конце строки представляют один символ кавычек в строке и конечный символ строки.
Строковые литералы могут содержать несколько строк:
Результирующая строка содержит последовательности новых строк, используемых в строковом литерале (vbcr, vbcrlf и т. д.). Вам больше не требуется использовать старое решение:
Символы в строках
Строку можно представить как последовательность значений Char . При этом тип String имеет встроенные функции, которые позволяют работать со строками, как с массивами. Как и все массивы в платформа .NET Framework, это отсчитываемые от нуля массивы. К определенному символу в строке можно обратиться с помощью свойства Chars , которое предоставляет механизм доступа к символу по позиции, в которой он отображается в строке. Например:
В приведенном выше примере свойство Chars строки возвращает четвертый символ в строке, D , и присваивает его myChar . Вы также можете получить длину определенной строки с помощью свойства Length . Если вам требуется выполнить несколько манипуляций со строкой, можно преобразовать ее в массив экземпляров Char с помощью функции ToCharArray строки. Например:
Переменная myArray теперь содержит массив значений Char , каждое из которых представляет символ из myString .
Неизменность строк
Строка неизменяема, что означает, что ее значение нельзя изменить после ее создания. Однако это не мешает назначить строковой переменной более одного значения. Рассмотрим следующий пример.
Здесь строковая переменная создается, получает значение, которое затем изменяется.
В частности, в первой строке создается экземпляр типа String , которому присваивается значение This string is immutable . Во второй строке примера создается новый экземпляр, которому присваивается значение Or is it? . При этом строковая переменная удаляет ссылку на первый экземпляр и сохраняет ссылку на новый экземпляр.
В отличие от других встроенных типов данных String — это ссылочный тип. Если переменная ссылочного типа передается в качестве аргумента функции или подпрограмме, вместо фактического значения строки передается ссылка на адрес в памяти, где хранятся данные. Поэтому в предыдущем примере имя переменной остается таким же, но оно указывает на другой экземпляр класса String , который содержит новое значение.
Источник
Строки в VBA
удалить из строки знак » и знак =
Вариант1
Вариант
Можно еще через байтовый массив:
Вариант
Или фильтрацию мидом:
Строку 6 можно заменить лайкой:
Код Visual Basic
1
If L Like «[!»»=]» Then Zam = Zam + L
Вариант
Еще через поиск позиции и рекурсию:
Еще можно через регулярные выражения, но я их не знаю.
Вариант
Через поиск справа налево и рекурсию:
Вариант
А ещё есть Split и Join
В верхний и в нижний регистр
или StrConv() — преобразовать строку (в Unicode и обратно, в верхний и нижний регистр, сделать первую букву слов заглавной и т.п.) — см. ниже
Операции со строками
Для данных типа String существует только одна операция – конкатенация (объединение). Например, результатом операции конкатенации трех строковых значений «Петр» & » » & «Иванович» будет строка «Петр Иванович». Возможно также использование другого оператора для операции конкатенации, например: «десяти» + «тысячник». Разница между этими выражениями состоит в том, что в первом случае операндами могут быть значения любого типа (они просто будут преобразовываться в строковые), а во втором – оба операнда должны иметь тип String. Для работы со строками существует большое количество функций (таблица. Функции работы со строками).
Таблица «Функции работы со строками»
Код Visual Basic |
Функция | Описание | Пример |
---|---|---|
Len(str) | Определяет длину строки | Из а=lеn(«Персонажи») следует а=9 |
Left ( , ) | Выделяет из аргумента указанное количество символов слева | Left(» 1234string», 4) =»1234″ |
Right( , ) | Выделяет из аргумента указанное количество символов справа | Right(» 1234string», 6) =»string» |
Mid( , [, ]) | Выделяет из аргумента подстроку с указанным числом символов, начиная с позиции | Mid («12345678″, 4.3) =»456» |
Mid( , ) | Выделяется подстрока от позиции до конца строки | Mid («12345678″, 4) =»45678» |
LTrim ( ) | Удаляет пробелы в начале строки | LTrim(» печать») =»печать» |
RTrim ( ) | Удаляет пробелы в конце строки | RTrim(«печать «) =»печать» |
Trim ( ) | Удаляет пробелы в начале и в конце строки | Trim(» печать «) =»печать» |
InStr([ , ] , [, ]) | Производит поиск подстроки в строке. Возвращает позицию первого вхождения строки в строку , — позиция, с которой начинается поиск. Если этот аргумент пропущен, поиск начинается с начала строки | Instr(«C:Temp test.mdb», «Test»)=9 Если искомая строка не находится в указанной строке, функция возвращает 0 |
InStrRev ([ , ] , [, ]) | Ищет подстроку в строке, но начинает поиск с конца строки и возвращает позицию последнего вхождения подстроки. Необязательный аргумент определяет тип сравнения двух строк | |
Replace ( , , ) | Позволяет заменить в строке одну подстроку другой. Эта функция ищет все вхождения аргумента в аргументе и заменяет их на |
Для сравнения строковых значений можно использовать обычные операторы сравнения числовых значений, так как при сравнении символов сравниваются их двоичные коды. Для сравнения строковых значений также применяется оператор Like, который позволяет обнаруживать неточное совпадение, например выражение «Входной сигнал» Like «Вход*» будет иметь значение True, так как сравниваемая строка начинается со слова «Вход». Символ звездочка (*) в строке заменяет произвольное число символов. Другие символы, которые обрабатываются оператором Like в сравниваемой строке:
- ? – любой символ (один);
- #– одна цифра (0–9);
- [ ] – символ, совпадающий с одним из символов списка;
- [! ] – символ, не совпадающий ни с одним из символов списка.
- ASC()— эта функция позволяет вернуть числовой код для переданного символа. Например, ASC( «D» ) вернет 68. Эту функцию удобно использовать для того, чтобы определить следующую или предыдущую букву. Обычно она используется вместе с функцией Chr(), которая производит обратную операцию — возвращает символ по переданному его числовому коду.Варианты этой функции — AscB() и AscW():
- AscB() — возвращает только первый байт числового кода для символа.
- AscW() — возвращает код для символа в кодировке Unicode
- Chr() — возвращает символ по его числовому коду. Может использоваться в паре с функцией Asc(), но чаще всего её применяют, когда нужно вывести служебный символ (например кавычки — » ), т.к. кавычки просто так в VBA-коде не ввести(нужно ставить двойные). Я обычно именно эту функцию и использую.
Есть варианты этой функции — ChrB() и ChrW(). Работают аналогично таким же вариантам для функции Asc().
InStr() и InStrRev()— одна из самых популярных функций. Позволяет обнаружить в теле строковой переменной символ или последовательность символов и вернуть их позицию. Если последовательность не обнаружена, то возвращается 0.Разница функций в том, что InStr() ищет указанное слово от начала строки, а InStrRev() с конца строки
Left(), Right(), Mid()— возможность взять указанное вами количество символов из существующей строковой переменной слева, справа или из середины соответственно.В качестве второго параметра параметра могут применяться константы:
- vbUpperCase: Преобразует все текстовые символы в ВЕРХНИЙ РЕГИСТР
- vbLowerCase: Преобразует все текстовые символы в нижний регистр
- vbProperCase: Переводит первый символ каждого слова в Верхний Регистр
- *vbWide: Преобразует символы строки из однобайтовых в двухбайтовые
- *vbNarrow: Преобразует символы строки из двухбайтовых в однобайтовые
- **vbKatakana: Преобразует символы Hiragana в символы Katakana
- **vbHiragana: Преобразует символы Katakana в символы Hiragana
- ***vbUnicode: Преобразует строку в Юникод с помощью кодовой страницы системы по умолчанию
- ***vbFromUnicode: Преобразует строку из Юникод в кодовую страницу системы по умолчанию
* применимо для локализаций Дальнего востока
** применимо только для Японии
*** не поддерживается операционными системами под управлением Macintosh - StrReverse() — «перевернуть» строку, разместив ее символы в обратном порядке. Функция работатет только начиная от Excel 2000 и выше. Пример использования функции, а так же иные методы переворачивания слова можно посмотреть в этой статье: Как перевернуть слово?
- Tab() — еще одна функция, которая используется для форматирования вывода на консоль. Размножает символы табуляции в том количестве, в котором вы укажете. Если никакое количество не указано, просто вставляет символ табуляции. Для вставки символа табуляции в строковое значение можно также использовать константу vbTab.
- String() — позволяет получить строку из указанного количества символов(которые опять-таки указываются Вами). Обычно используются для форматирования вывода совместно с функцией Len().
Следующие три функции позволяют работать с массивом строк
Split ( [, ]) – преобразует строку в массив подстрок. По умолчанию в качестве разделителя используется пробел. Данную функцию удобно использовать для разбиения предложения на слова. Однако можно указать в этой функции любой другой разделитель. Например, Split(3, «Этo тестовое предложение») возвращает массив из трех строковых значений: «Это», «тестовое», «предложение». Join ( [, ]) – преобразует массив строк в одну строку с указанным разделителем. Filter( , [, ] [, ]) – просматривает массив строковых значений и ищет в нем все подстроки, совпадающие с заданной строкой. Эта функция имеет четыре аргумента: – искомая строка; – параметр (булевское значение), который указывает, будут ли возвращаемые строки включать искомую подстроку или, наоборот, возвращаться будут только те строки массива, которые не содержат искомой строки в качестве подстроки; – параметр, определяющий метод сравнения строк. Еще три функции обеспечивают преобразование строк: LCase( ) – преобразует все символы строки к нижнему регистру, например функция LCase(«ПОЧTA») возвращает строку «почта»; UCase( ) – преобразует все символы строки к верхнему регистру; StrConv( , ) – выполняет несколько типов преобразований строки в зависимости от второго параметра. Этот параметр описывается встроенными константами, например функция StrConv(«poccия», VbProperCase) возвращает значение «Россия».
И последние две функции генерируют строки символов
Space( ) – создает строку, состоящую из указанного числа пробелов; String( , ) – создает строку, состоящую из указанного в первом аргументе числа символов. Сам символ указывается во втором аргументе.
Пример
Создать программу, работающую со строковыми переменными. Для этого создать форму, в метки которой выходят следующие сообщения: 1 метка: сообщается длина строки, введенной в первое текстовое поле (1 строка); 2 метка: преобразует все символы третьего текстового поля (3 строка) в заглавные буквы; 3 метка: выводит вместе содержание первого и второго текстовых полей (1 и 2 строки).
Технология выполнения
- Откройте приложение Word, сохраните документ и перейдите в редактор VBA.
- Создайте форму аналогично приведенному рисунку.
- Пропишите обработчик события кнопки ОК.
- Откомпилируйте программу.
- Запустите форму на выполнение.
Private Sub CommandButton1_Click() Dim a As String Dim b As String Dim c As String Dim k As String Dim d As String Dim n As Integer a=TextBox1.Text n=Len(a) Label7.Caption=«длина первой строки равна» & n & « символам» c=TextBox3.Text k=Ucase(с) Label8.Caption=k b=TextBox2.Text d=a + » » + b Label9.Caption=d End Sub
Задача
Нужно, что бы в экселе в ячейке А1 выполнялся поиск слов, записанных через запятую в столбец А2, а результат, и найденные слова, с числом их повторений (если такое возможно) в искомом тексте, записались в другую, третью, ячейку. (ещё лучше бы было, если б они выделялись (ну или подчеркивались) каким ни будь образом в первой ячейке…что бы их сразу видно было Вот так загоняешь в массив слова:
А потом в цикле по всем словам ищешь(опять же в цикле. во вложенном) Добавлено через 23 минуты
Код Visual Basic |
Добавлено через 15 минут А вот так будет искать по началу слова а выделять всё слово
Код Visual Basic |
Можно сделать что бы искало и не с начала слова, а по части слова. — добавить ещё один цикл Do-Loop. Только смещать начало(ST) влево до пробела (http://www.cyberforum.ru/vba/thread567588.html)
How to: Match a String against a Pattern (Visual Basic)
Проверка соответствия строки шаблону String Data Type (Visual Basic) — оператор Like (Visual Basic). левый операнд оператора Like- строковое выражение, а правый — строка шаблона Like возвращает значение типа Boolean
Источник
Adblock
detector
Код Visual Basic |
Дополнительные сведения: строковые функции (Visual Basic)
Пример: Укасе
В данном примере функция UCase используется для возврата строки в верхнем регистре.
‘ String to convert.Dim lowerCase As String = “Hello World 1234″‘ Returns “HELLO WORLD 1234”.Dim upperCase As String = UCase(lowerCase)
Источник: http://docs.microsoft.com/ru-ru/dotnet/visual-basic/language-reference/functions/string-functions
Функции для работы с текстом
Основные функции для работы с текстом в VBA Excel:
Функция | Описание |
---|---|
Asc(строка) | Возвращает числовой код символа, соответствующий первому символу строки. Например: MsgBox Asc(«/Stop»). Ответ: 47, что соответствует символу «/». |
Chr(код символа) | Возвращает строковый символ по указанному коду. Например: MsgBox Chr(47). Ответ: «/». |
Format(Expression, [FormatExpression], [FirstDayOfWeek], [FirstWeekOfYear]) | Преобразует число, дату, время в строку (тип данных Variant (String)), отформатированную в соответствии с инструкциями, включенными в выражение формата. Подробнее… |
InStr([начало], строка1, строка2, [сравнение]) | Возвращает порядковый номер символа, соответствующий первому вхождению одной строки (строка2) в другую (строка1) с начала строки. Подробнее… |
InstrRev(строка1, строка2, [начало, [сравнение]]) | Возвращает порядковый номер символа, соответствующий первому вхождению одной строки (строка2) в другую (строка1) с конца строки. |
Join(SourceArray,[Delimiter]) | Возвращает строку, созданную путем объединения нескольких подстрок из массива. Подробнее… |
LCase(строка) | Преобразует буквенные символы строки в нижний регистр. |
Left(строка, длина) | Возвращает левую часть строки с заданным количеством символов. Подробнее… |
Len(строка) | Возвращает число символов, содержащихся в строке. |
LTrim(строка) | Возвращает строку без начальных пробелов (слева). Подробнее… |
Mid(строка, начало, [длина]) | Возвращает часть строки с заданным количеством символов, начиная с указанного символа (по номеру). Подробнее… |
Replace(expression, find, replace, [start], [count], [compare]) | Возвращает строку, полученную в результате замены одной подстроки в исходном строковом выражении другой подстрокой указанное количество раз. Подробнее… |
Right(строка, длина) | Возвращает правую часть строки с заданным количеством символов. Подробнее… |
RTrim(строка) | Возвращает строку без конечных пробелов (справа). Подробнее… |
Space(число) | Возвращает строку, состоящую из указанного числа пробелов. Подробнее… |
Split(Expression,[Delimiter],[Limit],[Compare]) | Возвращает одномерный массив подстрок, извлеченных из указанной строки с разделителями. Подробнее… |
StrComp(строка1, строка2, [сравнение]) | Возвращает числовое значение Variant (Integer), показывающее результат сравнения двух строк. Подробнее… |
StrConv(string, conversion) | Изменяет регистр символов исходной строки в соответствии с заданным параметром «conversion». Подробнее… |
String(число, символ) | Возвращает строку, состоящую из указанного числа символов. В выражении «символ» может быть указан кодом символа или строкой, первый символ которой будет использован в качестве параметра «символ». Подробнее… |
StrReverse(строка) | Возвращает строку с обратным порядком следования знаков по сравнению с исходной строкой. Подробнее… |
Trim(строка) | Возвращает строку без начальных (слева) и конечных (справа) пробелов. Подробнее… |
UCase(строка) | Преобразует буквенные символы строки в верхний регистр. |
WorksheetFunction.Trim(строка) | Функция рабочего листа, которая удаляет все лишние пробелы (начальные, конечные и внутренние), оставляя внутри строки одиночные пробелы. |
В таблице перечислены основные функции VBA Excel для работы с текстом. С полным списком всевозможных функций вы можете ознакомиться на сайте разработчика.
Источник: http://vremya-ne-zhdet.ru/vba-excel/rabota-s-tekstom/
Синтаксис
variablename = “string”
Источник: http://maxfad.ru/programmer/vba/357-rabota-so-strokami-v-vba-instr-lcase-ucase-left-right-mid-ltrim-rtrim-trim-len-replace-space-strcomp-string-strreverse.html
Краткое руководство по текстовым функциям
Текстовые операции | Функции |
Добавить две или более строки | Format or «&» |
Построить текст из массива | Join |
Сравнить | StrComp or «=» |
Сравнить — шаблон | Like |
Преобразовать в текст | CStr, Str |
Конвертировать текст в дату | Просто: CDate Дополнительно: Format |
Преобразовать текст в число | Просто: CLng, CInt, CDbl, Val Дополнительно: Format |
Конвертировать в юникод, широкий, узкий | StrConv |
Преобразовать в верхний / нижний регистр | StrConv, UCase, LCase |
Извлечь часть текста | Left, Right, Mid |
Форматировать текст | Format |
Найти символы в тексте | InStr, InStrRev |
Генерация текста | String |
Получить длину строки | Len |
Удалить пробелы | LTrim, RTrim, Trim |
Заменить часть строки | Replace |
Перевернуть строку | StrReverse |
Разобрать строку в массив | Split |
Источник: http://excelpedia.ru/makrosi-v-excel/funkcii-po-rabote-s-tekstom
Функция InStr
Смотрите также
Else: MsgBox Mid(ProbeString,
Exit Sub End названием которого является на одну и Right$(о, 3) С_конца_буквы_1234_Оо = “1234567891011”lumn) String Dim Sum поможем Type mismatch, String a = события щелчка по вы ребята” должноВозвращаемое значениеOption CompareString2InStr([Start,]String1,String2[,Compare]) sympos) End Select If nstroka = год работы.
ту же ошибку:
= Right$(о, 4) Буква_1_О = Left$(о,Я бы написал As Double DimKuklPчто понятно, т.к. Text1.Text b = кнопке и откроет получиться “еынссалк выФункцияvbBinaryCompareнайдена внутриInStrB([Start,]String1,String2[,Compare])
End Sub
Right(stroka, (ls -Заранее очень благодарен! “Ошибка времени выполнения С_конца_буквы_12345_О = Right$(о,
1) Буква_1_О_м =
так Directory = | DirColumn As Double |
: Кросс: пытаетесь объединить строку | UCase(a) Text2.Text = |
окно кода формы ребята”. | Str |
0String1 | Функция |
dashulja index) + 1) | Watcher_1 |
Basic. Переменная типа 5) С_конца_буквы_123456_О = | Mid$(о, 1, 1) |
Cells(7, DirColumn) Application.Volatile True Forhttp://www.excel-vba.ru/forum/index.php?topic=2491.0 | (результат функции b End Sub |
с этой процедурой.Нужно и с(Expression) возвращает значение Number, | Выполняется побитовое сравнение |
Позиция, в которой обнаружено
InStr | : Даны 3 строки |
MsgBox nstroka, vbInformation, | : Держите Object не установлена” Right$(о, 6) С_конца_буквы_1234567_О Буква_2_я_О = Right$((Left$(о,beryllium Each cell InberylliumReplace Программа записывает все Вам остается только помошью Sub, и преобразованное в текстовыйvbTextCompare совпадение( символов, содержащие пробелы. |
“поиск в строке” | IseeYOU на строчках соответственно |
= Right$(о, 7) | 2)), 1) Буква_3_я_О |
: нда.. все печально | DirRange If cell: Добрый день.), а не массив. слова с заглавной вписать туда строчки, с помощью Function. тип данных String.1StartIn Str Вывести в столбцы End SubМожно даже |
: Огромное спасибо =)
“For i = С_конца_буквы_12345678_О = Right$(о, = Right$((Left$(о, 3)),
. давно не кодил | = DirNumber Then | Столкнулся со задачкой, |
Без | ((( | данныеЯ знаю какПри преобразовании в |
Выполняется текстовое сравнение | > | ing) служит для поиска |
А, В, С | немного сократить. | alex2476 |
1 To ActiveDocument.Paragraphs.Count” | С_конца_буквы_123456789_О = | 1) Буква_4_я_О = просто. надо изучить DirColumn = cell.Column начал писать, но |
Join МираРизовнаIgor_Tr просто перевести строку начале строки возвращаемогоvbDatabaseCompareString2 номера символа(номера байта активного рабочего листаalex2476: Знатоки подскажите пожалуйста, и “InsPreLast$ = Right$(о, 9) С_конца_буквы_12345678910_О Right$((Left$(о, 4)), 1) как правильно дебагить End If Next что-то не идетвариант работает, но: Private Sub CommandButton1_Click(), плюс одну команду наоборот, но чтобы значения резервируется место20 для слова из соответствующих: Спасибо уважаемый Профессор, как в VBA VBA.Left$(S, Len(S) - = Right$(о, 10) Буква_5_я_О = Right$((Left$(о, в среде VBA Directory = DirRange(1, пока, поскольку c есть подводный камень
Dim c() As
Источник: http://my-excel.ru/tekst/excel-vba-rabota-so-strokami.html
пример
Добавьте кнопку и добавьте следующую функцию.
Private Sub Constant_demo_Click() Dim Var As Variant Var = “Microsoft VBScript” MsgBox (“Line 1 : ” & InStr(1, Var, “s”)) MsgBox (“Line 2 : ” & InStr(7, Var, “s”)) MsgBox (“Line 3 : ” & InStr(1, Var, “f”, 1)) MsgBox (“Line 4 : ” & InStr(1, Var, “t”, 0)) MsgBox (“Line 5 : ” & InStr(1, Var, “i”)) MsgBox (“Line 6 : ” & InStr(7, Var, “i”)) MsgBox (“Line 7 : ” & InStr(Var, “VB”)) End Sub
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
Line 1 : 6
Line 2 : 0
Line 3 : 8
Line 4 : 9
Line 5 : 2
Line 6 : 16
Line 7 : 11
Возвращает первое вхождение указанной подстроки. Поиск происходит слева направо.
InStrRev
Функция InStrRev возвращает первое вхождение одной строки в другую строку. Поиск происходит справа налево.
Источник: http://maxfad.ru/programmer/vba/357-rabota-so-strokami-v-vba-instr-lcase-ucase-left-right-mid-ltrim-rtrim-trim-len-replace-space-strcomp-string-strreverse.html
Пример: mid
В этом примере Mid функция используется для возврата указанного числа символов из строки.
‘ Creates text string.Dim testString As String = “Mid Function Demo”‘ Returns “Mid”.Dim firstWord As String = Mid(testString, 1, 3)’ Returns “Demo”.Dim lastWord As String = Mid(testString, 14, 4)’ Returns “Function Demo”.Dim midWords As String = Mid(testString, 5)
Источник: http://docs.microsoft.com/ru-ru/dotnet/visual-basic/language-reference/functions/string-functions
Ключевые слова для работы с текстом
Ключевое слово | Описание |
---|---|
& | Оператор & объединяет два выражения (результат = выражение1 & выражение2). Если выражение не является строкой, оно преобразуется в Variant (String), и результат возвращает значение Variant (String). Если оба выражения возвращают строку, результат возвращает значение String. |
vbCrLf | Константа vbCrLf сочетает в себе возврат каретки и перевод строки (Chr(13) + Chr(10)) и переносит последующий текст на новую строку (результат = строка1 & vbCrLf & строка2). |
vbNewLine | Константа vbNewLine в VBA Excel аналогична константе vbCrLf, также сочетает в себе возврат каретки и перевод строки (Chr(13) + Chr(10)) и переносит текст на новую строку (результат = строка1 & vbNewLine & строка2). |
Источник: http://vremya-ne-zhdet.ru/vba-excel/rabota-s-tekstom/
LCASE
Функция LCase возвращает строку после преобразования введенной строки в строчные буквы.
Источник: http://maxfad.ru/programmer/vba/357-rabota-so-strokami-v-vba-instr-lcase-ucase-left-right-mid-ltrim-rtrim-trim-len-replace-space-strcomp-string-strreverse.html
Left
Функция Left возвращает указанное количество символов с левой стороны данной входной строки.
Источник: http://maxfad.ru/programmer/vba/357-rabota-so-strokami-v-vba-instr-lcase-ucase-left-right-mid-ltrim-rtrim-trim-len-replace-space-strcomp-string-strreverse.html
Пример: InStr
В данном примере функция InStr используется для возврата позиции первого вхождения одной строки в другую.
‘ String to search in.Dim searchString As String = “XXpXXpXXPXXP”‘ Search for “P”.Dim searchChar As String = “P”Dim testPos As Integer’ A textual comparison starting at position 4. Returns 6.testPos = InStr(4, searchString, searchChar, CompareMethod.Text)’ A binary comparison starting at position 1. Returns 9.testPos = InStr(1, SearchString, SearchChar, CompareMethod.Binary)’ If Option Compare is not set, or set to Binary, return 9.’ If Option Compare is set to Text, returns 3.testPos = InStr(searchString, searchChar)’ Returns 0.testPos = InStr(1, searchString, “W”)
Источник: http://docs.microsoft.com/ru-ru/dotnet/visual-basic/language-reference/functions/string-functions
LTrim
Функция Ltrim удаляет пробелы с левой стороны строки.
Источник: http://maxfad.ru/programmer/vba/357-rabota-so-strokami-v-vba-instr-lcase-ucase-left-right-mid-ltrim-rtrim-trim-len-replace-space-strcomp-string-strreverse.html
См. также
- Ключевые слова
- Члены библиотеки времени выполнения Visual Basic
- Сводка по работе со строками
- Методы класса System. String
Источник: http://docs.microsoft.com/ru-ru/dotnet/visual-basic/language-reference/functions/string-functions
Len
Функция Len возвращает длину данной входной строки, включая пробелы.
Источник: http://maxfad.ru/programmer/vba/357-rabota-so-strokami-v-vba-instr-lcase-ucase-left-right-mid-ltrim-rtrim-trim-len-replace-space-strcomp-string-strreverse.html