VBA имеет множество строковых функций, которые позволят вам управлять текстом и строками в вашем коде и работать с ними. В этом руководстве мы рассмотрим функции, которые позволят вам извлекать подстроки из строк, удалять пробелы из строк, преобразовывать регистр текста или строки, сравнивать строки и другие полезные строковые функции.
Извлечение подстроки
Функция левой строки VBA
Функция VBA Left позволяет извлекать подстроку из текста или строки, начиная с левой стороны. Синтаксис функции левой строки VBA:
Left (String, Num_of_characters), где:
- Строка - исходный текст.
- Num_of_characters - Целое число, указывающее количество символов, извлекаемых из исходного текста, начиная с начала.
В следующем коде показано, как использовать функцию левой строки для извлечения первых четырех символов данной строки:
1234567891011 | Sub UsingTheLeftStringFunction ()Тусклое значение: одно как строкаТусклое значение Два как строкаvalueOne = "AutomateExcel"valueTwo = Left (значениеOne, 4)MsgBox valueTwoКонец подписки |
Результат:
Функция Left извлекла первые четыре буквы AutomateExcel, которые являются Auto.
Функция правой строки VBA
Правая функция VBA позволяет извлекать подстроку из текста или строки, начиная с правой стороны. Синтаксис функции правой строки VBA:
Справа (String, Num_of_characters), где:
- Строка - исходный текст.
- Num_of_characters - Целое число, указывающее количество символов, извлекаемых из исходного текста, начиная с конца.
В следующем коде показано, как использовать функцию правой строки для извлечения последних четырех символов строки:
1234567891011 | Подложка UsingTheRightStringFunction ()Тусклое значение: одно как строкаТусклое значение Два как строкаvalueOne = "AutomateExcel"valueTwo = Right (значениеOne, 4)MsgBox valueTwoКонец подписки |
Результат:
Функция Right извлекла последние четыре буквы AutomateExcel, которые являются xcel.
Функция средней строки VBA
Функция VBA Mid позволяет извлекать подстроку из текста или строки, начиная с любой позиции в указанной вами строке. Синтаксис функции средней строки VBA:
Mid (String, Starting_position, [Num_of_characters]), где:
- Строка - исходный текст.
- Начальная_позиция - позиция в исходном тексте, из которой функция начнет извлекать.
- Num_of_characters (По желанию) - Целое число, указывающее количество символов, извлекаемых из исходного текста, начиная с начального_позиции. Если пусто, функция MID вернет все символы из начального_позиции.
В следующем коде показано, как использовать функцию Mid String для извлечения четырех символов, начиная со второй позиции или символа в строке:
1234567891011 | Sub UsingTheMidStringFunction ()Тусклое значение: одно как строкаТусклое значение Два как строкаvalueOne = "AutomateExcel"valueTwo = Mid (значениеOne; 2; 4)MsgBox valueTwoКонец подписки |
Результат выводится в msgbox:
Функция Mid извлекла четыре буквы AutomateExcel, начиная со второго символа / позиции / буквы, которые являются utom.
Поиск позиции подстроки
Строковая функция VBA Instr
Функция VBA Instr возвращает начальную позицию подстроки в другой строке. Эта функция чувствительна к регистру. Синтаксис строковой функции VBA Instr:
Instr ([Начало], Строка, Подстрока, [Сравнить]), где:
- Начинать (По желанию) - указывает начальную позицию для функции для поиска. Если пусто, используется значение по умолчанию 1.
- Строка - исходный текст.
- Подстрока- Подстрока в исходном тексте, положение которой вы хотите найти.
- Сравнивать (По желанию)- Определяет тип сравнения, которое нужно сделать. Если пусто, используется двоичное сравнение.
-vbBinaryCompare - двоичное сравнение (верхний и нижний регистры считаются разными)
-vbTextCompare - Сравнение текста (верхний и нижний регистр считаются одинаковыми)
-vbDatabaseCompare - сравнение базы данных (этот параметр используется только в Microsoft Access и представляет собой сравнение на основе базы данных)
В следующем коде показано, как использовать функцию Instr String для определения первого вхождения подстроки «Th» в основной строке:
123456789101112 | Sub UsingTheInstrStringFunction ()Тусклое значение: одно как строкаУменьшить положение подстроки как целое числоvalueOne = "Это текст"positionofSubstring = InStr (1, valueOne, "Th")Отладка. Печать позиции подстрокиКонец подписки |
Результат (выводится в окно Immediate Window):
Функция Instr вернула позицию первого вхождения подстроки «Th», которая равна 1. Обратите внимание, что эта функция включает пробелы в счетчике.
Строковая функция VBA InstrRev
Функция VBA InstrRev возвращает начальную позицию подстроки в другой строке, но начинает отсчет позиции с конца строки. Эта функция чувствительна к регистру. Синтаксис строковой функции VBA InstrRev:
InstrRev (String, Substring, [Start], [Compare]), где:
- Строка - исходный текст.
- Подстрока- Подстрока в исходном тексте, положение которой вы хотите найти.
- Начинать (По желанию) - указывает позицию для начала поиска. Если пусто, функция начинает поиск с последнего символа.
- Сравнивать (По желанию)- Определяет тип сравнения, которое нужно сделать. Если пусто, используется двоичное сравнение.
-vbBinaryCompare - двоичное сравнение (верхний и нижний регистры считаются разными)
-vbTextCompare - Сравнение текста (верхний и нижний регистр считаются одинаковыми)
-vbDatabaseCompare - сравнение базы данных (этот параметр используется только в Microsoft Access и представляет собой сравнение на основе базы данных)
В следующем коде показано, как использовать функцию InstrRev String для определения первого вхождения подстроки «Th» в основной строке, начиная с конца строки:
1234567891011 | Sub UsingTheInstrRevStringFunction ()Тусклое значение: одно как строкаУменьшить положение подстроки как целое числоvalueOne = "Это текст"positionofSubstring = InStrRev (valueOne, "Th")Отладка. Печать позиции подстрокиКонец подписки |
Результат выводится в Немедленное окно:
Функция InstrRev вернула позицию первого вхождения подстроки «Th», но отсчет начинается с конца, равного 9. Обратите внимание, что эта функция включает пробелы в счетчике.
Удаление пробелов из строки
Строковая функция VBA LTrim
Функция VBA LTrim удаляет все начальные пробелы из текста или строки. Синтаксис строковой функции VBA LTrim:
LTrim (String) где:
- Строка - исходный текст.
В следующем коде показано, как использовать функцию VBA LTrim для удаления начальных пробелов в данной строке:
123456789101112 | Sub UsingTheLTrimStringFunction ()Тусклое значение: одно как строкаТусклое значение Два как строкаvalueOne = "Это адрес веб-сайта https://easyexcel.net/excel/"valueTwo = LTrim (значениеOne)MsgBox valueOneMsgBox valueTwoКонец подписки |
Результаты следующие:
Функция LTrim удалила начальные пробелы для valuetwo, которое показано во втором окне сообщения.
Строковая функция VBA RTrim
Функция VBA RTrim удаляет все конечные пробелы из текста или строки. Синтаксис строковой функции VBA RTrim:
RTrim (String) где:
- Строка - исходный текст.
В следующем коде показано, как использовать функцию VBA RTrim для удаления конечных пробелов в данной строке:
123456789101112 | Sub UsingTheRTrimStringFunction ()Тусклое значение: одно как строкаТусклое значение Два как строкаvalueOne = "Это адрес веб-сайта https://easyexcel.net/excel/"valueTwo = RTrim (значениеOne)MsgBox valueOneMsgBox valueTwoКонец подписки |
Полученные результаты:
Функция RTrim удалила конечные пробелы для valuetwo, которое показано во втором окне сообщения.
Функция строки обрезки VBA
Функция обрезки VBA удаляет все начальные и конечные пробелы из текста или строки. Синтаксис функции строки обрезки VBA:
Обрезать (Строка), где:
- Строка - исходный текст.
В следующем коде показано, как использовать функцию обрезки VBA для удаления начальных и конечных пробелов в данной строке:
123456789101112 | Подпрограмма UsingTheTrimStringFunction ()Тусклое значение: одно как строкаТусклое значение Два как строкаvalueOne = "Это адрес веб-сайта https://easyexcel.net/excel/"valueTwo = Обрезать (значениеOne)MsgBox valueOneMsgBox valueTwoКонец подписки |
Результат:
Функция обрезки удалила начальные и конечные пробелы для valuetwo, которое показано во втором окне сообщения.
Функции регистра VBA
Строковая функция VBA LCase
Функция VBA LCase преобразует буквы в тексте или строке в нижний регистр. Синтаксис строковой функции VBA LCase:
LCase (String) где:
- Строка - исходный текст.
В следующем коде показано, как использовать строковую функцию LCase для преобразования всех букв в данной строке в нижний регистр:
1234567891011 | Sub UsingTheLCaseStringFunction ()Тусклое значение: одно как строкаТусклое значение Два как строкаvalueOne = "ЭТО ПРОДУКТ"valueTwo = LCase (значениеOne)MsgBox valueTwoКонец подписки |
Результат:
Функция LCase преобразовала все буквы в строке в нижний регистр.
Строковая функция VBA UCase
Функция VBA UCase преобразует буквы в тексте или строке в верхний регистр. Синтаксис строковой функции VBA UCase:
UCase (String) где:
- Строка - исходный текст.
В следующем коде показано, как использовать функцию строки UCase для преобразования всех букв в данной строке в верхний регистр:
1234567891011 | Sub UsingTheUCaseStringFunction ()Тусклое значение: одно как строкаТусклое значение Два как строкаvalueOne = "это продукт"valueTwo = UCase (значениеOne)MsgBox valueTwoКонец подписки |
Результат:
Функция UCase преобразовала все буквы в строке в верхний регистр.
Функция VBA StrConv
Функция VBA StrConv может преобразовывать буквы в тексте или строке в верхний регистр, нижний регистр, правильный регистр или Unicode в зависимости от указанного вами типа преобразования. Синтаксис строковой функции VBA StrConv:
StrConv (String, Conversion, [LCID]) где:
- Строка - исходный текст.
- Конверсия - желаемый тип конверсии.
- [LCID] (По желанию) -Необязательный параметр, указывающий LocaleID. Если пусто, используется системный LocaleID.
В следующем коде показано, как использовать функцию StrConv String для преобразования строки в соответствующий регистр:
1234567891011 | Подпрограмма UsingTheStrConvStringFunction ()Тусклое значение: одно как строкаТусклое значение Два как строкаvalueOne = "это продукт"valueTwo = StrConv (значениеOne, vbProperCase)MsgBox valueTwoКонец подписки |
Результат:
Вы указываете тип преобразования, которое хотите выполнить, используя параметр преобразования:
- vbLowerCase преобразует все буквы в тексте в нижний регистр.
- vbUpperCase преобразует все буквы в тексте в верхний регистр.
- vbProperCase преобразует первую букву каждого слова в тексте в верхний регистр, а все остальные буквы остаются в нижнем регистре.
- vbUnicode преобразует строку в Unicode.
- vbFromUnicode преобразует строку из юникода в кодовую страницу системы по умолчанию.
Сравнение строк
Функция VBA StrComp
Строковая функция VBA StrComp позволяет сравнивать две строки. Функция возвращает:
- 0, если две строки совпадают
- -1, если строка1 меньше строки2
- 1, если строка1 больше строки2
- Нулевое значение, если одна из строк была Null
В следующем коде показано, как использовать функцию StrComp для сравнения двух строк:
123456789101112 | Sub UsingTheStrCompStringFunction ()Тусклое значение: одно как строкаТусклое значение Два как строкаУменьшить результат сравнения как целое числоvalueOne = "AutomateExcel"valueTwo = "AutomateExcel"resultofComparison = StrComp (значениеOne, значениеTwo)Отладка. Распечатать результат сравненияКонец подписки |
Результат:
Функция StrComp нашла точное совпадение между двумя строками и вернула 0.
Оператор Like VBA
Оператор Like VBA позволяет сравнить текст или строку с шаблоном и посмотреть, есть ли совпадение. Обычно оператор Like используется вместе с подстановочными знаками. В следующем коде показано, как использовать оператор Like:
123456789101112 | Sub UsingTheLikeOperatorInVBA ()Тусклое значение: одно как строкаvalueOne = "Давайте посмотрим на результат"Если valueOne Like "* view *" ТогдаMsgBox «Есть совпадение, эта строка содержит слово view»ЕщеMsgBox "Совпадений не найдено"Конец, еслиКонец подписки |
Результат:
Подстановочные знаки, которые вы можете использовать с оператором Like для поиска совпадений с образцом, включают:
- ? что соответствует одиночному символу
- # что соответствует одной цифре
- * что соответствует нулю или более символов
В следующем коде показано, как использовать оператор Like и оператор? подстановочный знак, соответствующий шаблону в вашем коде:
123456789101112 | Sub UsingTheLikeOperatorWithAWildcardInVBA ()Тусклое значение: одно как строкаvalueOne = "The"Если valueOne Like "?? e" ТогдаMsgBox "Есть совпадение, найден соответствующий шаблон"ЕщеMsgBox «Совпадений не найдено»Конец, еслиКонец подписки |
Полученный результат:
Другие полезные строковые функции VBA
Функция замены строки VBA
Функция замены VBA заменяет набор символов в строке другим набором символов. Синтаксис функции замены строки VBA:
Заменить (Строка, Найти, Заменить, [Начало], [Счетчик], [Сравнить]), где:
- Строка - исходный текст.
- Найти - подстрока для поиска в исходном тексте.
- Заменить - подстрока, на которую нужно заменить подстроку поиска.
- Начинать (По желанию)- Позиция для начала поиска из исходного текста. Если пусто, используется значение 1, и функция начинается с позиции первого символа.
- Считать (По желанию)- Количество появлений заменяемой подстроки «Найти» в исходном тексте. Если пусто, заменяются все вхождения подстроки «Найти».
- Сравнивать (По желанию)- Определяет тип сравнения, которое нужно сделать. Если пусто, используется двоичное сравнение.
-vbBinaryCompare - двоичное сравнение
-vbTextCompare - Сравнение текста
-vbDatabaseCompare - сравнение базы данных (этот параметр используется только в Microsoft Access и представляет собой сравнение на основе базы данных).
В следующем коде показано, как использовать функцию замены строки:
1234567891011 | Подпрограмма UsingTheReplaceStringFunction ()Тусклое значение: одно как строкаТусклое значение Два как строкаvalueOne = "ProductABC"valueTwo = Replace (valueOne, «ABC», «XYZ»)MsgBox valueTwoКонец подписки |
Результат:
Функция замены нашла подстроку ABC в ProductABC и заменила ее подстрокой XYZ.
Функция VBA StrReverse
Функция VBA StrReverse меняет местами символы в заданном тексте или строке. Синтаксис строковой функции VBA StrReverse:
StrReverse (String) где:
- Строка - исходный текст.
В следующем коде показано, как использовать функцию VBA StrReverse для изменения символов в строке Product:
1234567891011 | Подпрограмма UsingTheStrReverseStringFunction ()Тусклое значение: одно как строкаТусклое значение Два как строкаvalueOne = "Продукт"valueTwo = StrReverse (значениеOne)MsgBox valueTwoКонец подписки |
Результат:
Строковая функция VBA Len
Функция VBA Len возвращает количество символов в текстовой строке. Синтаксис строковой функции VBA Len String:
Len (String) где:
- Строка - исходный текст.
В следующем коде показано, как использовать функцию Len String для определения длины строки AutomateExcel:
1234567891011 | Sub UsingTheLenFunction ()Тусклое значение: одно как строкаDim stringLength As IntegervalueOne = "AutomateExcel"stringLength = Len (значениеOne)Debug.Print stringLengthКонец подписки |
Результат:
Функция Len подсчитала все символы в тексте AutomateExcel, который состоит из 13 букв.