Excel vba string
Для данных типа String существует только одна операция — конкатенация (объединение). Например, результатом операции конкатенации трех строковых значений «Петр» & » » & «Иванович» будет строка «Петр Иванович». Возможно также использование другого оператора для операции конкатенации, например: «десяти» + «тысячник». Разница между этими выражениями состоит в том, что в первом случае операндами могут быть значения любого типа (они просто будут преобразовываться в строковые), а во втором — оба операнда должны иметь тип String.
Для работы со строками существует большое количество функций (таблица. Функции работы со строками).
Таблица «Функции работы со строками»
Функция | Описание | Пример |
---|---|---|
Len(str) | Определяет длину строки | Из а=lеn(«Персонажи») следует а=9 |
Left ( , ) | Выделяет из аргумента указанное количество символов слева | Left(» 1234string», 4) =»1234″ |
Right( , ) | Выделяет из аргумента указанное количество символов справа | Right(» 1234string», 6) =»string» |
Mid( , [, ]) | Выделяет из аргумента подстроку с указанным числом символов, начиная с позиции | M |
Mid( , ) | Выделяется подстрока от позиции до конца строки | M |
LTrim ( ) | Удаляет пробелы в начале строки | LTrim(» печать») =»печать» |
RTrim ( ) | Удаляет пробелы в конце строки | RTrim(«печать «) =»печать» |
Trim ( ) | Удаляет пробелы в начале и в конце строки | Trim(» печать «) =»печать» |
InStr([ , ] , [, ]) | Производит поиск подстроки в строке. Возвращает позицию первого вхождения строки в строку , — позиция, с которой начинается поиск. Если этот аргумент пропущен, поиск начинается с начала строки | Instr(«C:Temp test.mdb», «Test»)=9 Если искомая строка не находится в указанной строке, функция возвращает 0 |
InStrRev ([ , ] , [, ]) | Ищет подстроку в строке, но начинает поиск с конца строки и возвращает позицию последнего вхождения подстроки. Необязательный аргумент определяет тип сравнения двух строк | |
Replace ( , , ) | Позволяет заменить в строке одну подстроку другой. Эта функция ищет все вхождения аргумента в аргументе и заменяет их на |
Для сравнения строковых значений можно использовать обычные операторы сравнения числовых значений, так как при сравнении символов сравниваются их двоичные коды.
Для сравнения строковых значений также применяется оператор Like, который позволяет обнаруживать неточное совпадение, например выражение «Входной сигнал» Like «Вход*» будет иметь значение True, так как сравниваемая строка начинается со слова «Вход». Символ звездочка (*) в строке заменяет произвольное число символов. Другие символы, которые обрабатываются оператором Like в сравниваемой строке:
- ? — любой символ (один);
- #- одна цифра (0-9);
- [ ] — символ, совпадающий с одним из символов списка;
- [! ] — символ, не совпадающий ни с одним из символов списка.
Следующие три функции позволяют работать с массивом строк
- Split ( [, ]) — преобразует строку в массив подстрок. По умолчанию в качестве разделителя используется пробел. Данную функцию удобно использовать для разбиения предложения на слова. Однако можно указать в этой функции любой другой разделитель. Например, Split(3, «Это тестовое предложение») возвращает массив из трех строковых значений: «Это», «тестовое», «предложение».
- Join ( [, ]) — преобразует массив строк в одну строку с указанным разделителем.
- Filter ( , [, ] [, ]) — просматривает массив строковых значений и ищет в нем все подстроки, совпадающие с заданной строкой.
Эта функция имеет четыре аргумента:
- — искомая строка;
- — параметр (boolean значение), который указывает, будут ли возвращаемые строки включать искомую подстроку или, наоборот, возвращаться будут только те строки массива, которые не содержат искомой строки в качестве подстроки;
- — параметр, определяющий метод сравнения строк.
Еще три функции обеспечивают преобразование строк:
- LCase ( ) — преобразует все символы строки к нижнему регистру, например функция LCase(«ПОЧTA») возвращает строку «почта»;
- UCase ( ) — преобразует все символы строки к верхнему регистру;
- StrConv ( , ) — выполняет несколько типов преобразований строки в зависимости от второго параметра. Этот параметр описывается встроенными константами, например функция StrConv(«poccия», VbProperCase) возвращает значение «Россия».
И последние две функции генерируют строки символов
- Space ( ) — создает строку, состоящую из указанного числа пробелов;
- String ( , ) — создает строку, состоящую из указанного в первом аргументе числа символов. Сам символ указывается во втором аргументе.
Пример
Создать программу, работающую со строковыми переменными. Для этого создать форму, в метки которой выходят следующие сообщения:
1 метка: сообщается длина строки, введенной в первое текстовое поле (1 строка);
2 метка: преобразует все символы третьего текстового поля (3 строка) в заглавные буквы;
3 метка: выводит вместе содержание первого и второго текстовых полей (1 и 2 строки).
Хороший фреймворк (framework) лучшее решение для безпроблемной работы со строками.
Технология выполнения
- Откройте приложение Word, сохраните документ и перейдите в редактор VBA.
- Создайте форму аналогично приведенному рисунку.
- Пропишите обработчик события кнопки ОК.
- Откомпилируйте программу.
- Запустите форму на выполнение.
Форма примера в режиме конструктора и в рабочем состоянии
Strings in VBA
What is a String
The variable type is used to hold strings of text. Strings are a sequence of characters: alphabetical, numbers, special characters in any combination.
It is good programming practice to declare a variable and its type before using it because it prevents mistakes(see Option Explicit)
To give the variable a value the value has to be surrounded with double quotes:
A variable is said to be a string if its value is enclosed within double quotes » «. The syntax is:
Note |
---|
The Visual Basic interpreter tries to understand (resolve) any assignment of a variable given its type. The following would also be automatically converted to the string type: str = 100 |
String Manipulation
There are many VBA’s built-in string functions. Some of them we’ll study here: LCase, UCase, Len, Trim, Space Replace StrReverse InStr, InStrRev Left, Right Mid
Lcase(String) ‘Returns the lower case of the specified string
LCase(«ALPHABET») Result: «Alphabet»
Ucase(String) ‘Returns the upper case of the specified string
UCase(«Alphabet») Result: «ALPHABET»
When you have to compare two variable values it can be important to check if all values are in the same case for the cases that it is not important if a value is written with capital or not. Then you use Lcase or Ucase before the values.
Len(«string») ‘Returns the lenght, the number of characters, of the string, including the blank spaces. Result:6
Len(«String Manipulation!!») ‘Result:21
Concatenation
Concatenation is joining multiple strings into a single string. You do it with the & symbol.
Spaces — add or remove
Space(number) — fills a string with a specified number of spaces. Used in combination with/ concatenated with other variables via the & symbol.
Other functions concerning spaces remove spaces. As variable-values with or without erroneous spaces differ it is important to check if there are any spaces in values.
LTrim(String) | Returns a string after removing the spaces on the left side of the specified string. |
RTrim(String) | Returns a string after removing the spaces on the right side of the specified string. |
Trim(String) | Returns a string value after removing both leading and trailing blank spaces. |
Replace
Syntax: Replace( string_to_search, string_to_replace, replace_with [start, [count, [compare]]] )
The arguments between the [] are optional. Start: This is the position in string_to_search to begin the search. If this parameter is omitted, the Replace function will begin the search at position 1.
Count: This is the number of occurrences to replace. If this parameter is omitted, the REPLACE function will replace all occurrences of string_to_replace with replace_with.
Compare: This can be one of the following 2 values:vbBinary, the Compare Binary comparison or vbTextCompare, Textual comparison.
Replace(«codevba», «vba», » VBA») ‘Result= code VBA
Replace(«codevba», «a», » Extra») ‘ Result= codevbExtra
Replace(«John Doe», «o», «i») ‘ Result=Jihn Die
Left & Right
Example: Left(«text_string», 3) ‘gives «tex»
Example: Right(«text_string», 3) ‘gives «ing»
Mid(string_to_search, start_position, number_of_characters)
For extracting a substring, starting at the start_position somewhere in the middle of a string. If you want to extract a substring from a string starting in the middle until the end of it you can omit the third argument.
Example: Mid(«text_string», 9, 2) ‘gives «in»
Mid(«text_string», 3, 5) ‘gives «xt_st»
Search
InStr( [start], string_to_search, substring, [compare] ) ‘Returns the first occurence of the specified substring. Search happens from left to right.
On the first place you can give the startposition of the search, if omitted the search starts at the beginning. On the second place comes the text to search, and on the 3th place what you want to find. VBA will then give you an Integer back in return. This number is 0 if the string is not found. If the string is found then you get the location of the start of the string you were search for.
Example:
InStr(1, «codevbatool», «o») result: 2. You get the place of the first occurence from the left of the string of the ‘o’, not the count, nor the other ‘o’s
InStrRev(string1,string2[,start,[compare]])
InStrRev(» «codevbatool», «o») result:10
Returns the first occurence of the specified substring. Search happens from Right to Left. You get the place of the first occurence from the right of the string, but counted from the left. it checks its position from the forward direction and gives its position as the result.
The practical use of InStrRev can be in finding the last index of a character inside a string.
StrReverse(string). Reverses the specified string.
Example: StrReverse(«123.45») ‘gives «54.321»
Function Name | Description |
---|---|
InStr | Returns the first occurence of the specified substring. Search happens from left to right. |
InstrRev | Returns the first occurence of the specified substring. Search happens from Right to Left. |
Lcase | Returns the lower case of the specified string. |
Ucase | Returns the Upper case of the specified string. |
Left | Returns a specific number of characters from the left side of the string. |
Right | Returns a specific number of characters from the Right side of the string. |
Mid | Returns a specific number of characters from a string based on the specified parameters. |
Ltrim | Returns a string after removing the spaces on the left side of the specified string. |
Rtrim | Returns a string after removing the spaces on the right side of the specified string. |
Trim | Returns a string value after removing both leading and trailing blank spaces. |
Len | Returns the lenght of the given string. |
Replace | Returns a string after replacing a string with another string. |
Space | Fills a string with the specified number of spaces. |
StrComp | Returns an integer value after comparing the two specified strings. |
String | Returns a String with a specified character the specified number of times. |
StrReverse | Returns a String after reversing the sequence of the characters of the given string. |
CODE VBA — AGORA Software BV Copyright 1997-2019
Работа со строками в VBA: InStr, LCASE, UCase, Left, Right, Mid, LTrim, RTrim, Trim, Len, Replace, Space, StrComp, String, StrReverse
В этой статье разберем работу со строками в VBA на примерах функций InStr, LCASE, UCase, Left, Right, Mid, LTrim, RTrim, Trim, Len, Replace, Space, StrComp, String, StrReverse.
Строки — это последовательность символов, которая может состоять либо из алфавитов, цифр, специальных символов, либо из всех них. Переменная называется строкой, если она заключена в двойные кавычки «».
Синтаксис
Примеры
Строковые функции
Существуют предопределенные функции VBA String, которые помогают разработчикам эффективно работать со строками. Ниже приведены методы String, поддерживаемые в VBA. Пожалуйста, нажмите на каждый из методов, чтобы знать подробно.
Название функции и описание
InStr
Функция InStr возвращает первое вхождение одной строки в другую строку. Поиск происходит слева направо.
Синтаксис
Параметр Описание
- Пуск — необязательный параметр. Указывает начальную позицию для поиска. Поиск начинается с первой позиции слева направо.
- String1 — требуемый параметр. Строка для поиска.
- String2 — требуемый параметр. Строка, по которой выполняется поиск String1.
- Compare — Необязательный параметр. Указывает сравнение строк.Он может принимать следующие значения.
- 0 = vbBinaryCompare — выполняет двоичное сравнение (по умолчанию)
- 1 = vbTextCompare — выполняет сравнение текста
пример
Добавьте кнопку и добавьте следующую функцию.
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
Line 1 : 6
Line 2 : 0
Line 3 : 8
Line 4 : 9
Line 5 : 2
Line 6 : 16
Line 7 : 11
Возвращает первое вхождение указанной подстроки. Поиск происходит слева направо.
Функция InStrRev возвращает первое вхождение одной строки в другую строку. Поиск происходит справа налево.
Синтаксис
Параметр Описание
- String1 — требуемый параметр. Строка для поиска.
- String2 — требуемый параметр. Строка, по которой выполняется поиск String1.
- Пуск — необязательный параметр. Указывает начальную позицию для поиска. Поиск начинается с первой позиции справа налево.
- Compare — Необязательный параметр. Указывает сравнение строк.Он может принимать следующие значения.
- 0 = vbBinaryCompare — выполняет двоичное сравнение (по умолчанию)
- 1 = vbTextCompare — выполняет сравнение текста
пример
Добавьте кнопку и установите следующую функцию.
После выполнения вышеуказанного скрипта он производит следующий результат.
Line 1 : 6
Line 2 : 6
Line 3 : 8
Line 4 : 0
Line 5 : 2
Line 6 : 2
Line 7 : 0
Возвращает первое вхождение указанной подстроки. Поиск происходит справа налево.
LCASE
Функция LCase возвращает строку после преобразования введенной строки в строчные буквы.
Синтаксис
пример
Добавьте кнопку и поместите следующую функцию внутри нее.
После выполнения вышеуказанного скрипта он производит следующий вывод.
Line 1 : microsoft vbscript
Line 2 : ms vbscript
Line 3 : microsoft
Возвращает нижний регистр указанной строки.
UCase
Функция UCase возвращает строку после преобразования введенной строки в буквы буквы UPPER.
Синтаксис
пример
Добавьте кнопку и поместите следующую функцию внутри нее.
После выполнения вышеуказанного скрипта он производит следующий вывод.
Line 1 : MICROSOFT VBSCRIPT
Line 2 : MS VBSCRIPT
Line 3 : MICROSOFT
Возвращает верхний регистр указанной строки.
Функция Left возвращает указанное количество символов с левой стороны данной входной строки.
Синтаксис
Параметр Описание
- String — обязательный параметр. Строка ввода, из которой указанное число символов должно быть возвращено с левой стороны.
- Длина — требуемый параметр. Целое число, определяющее количество возвращаемых символов.
пример
Добавьте кнопку и добавьте следующую функцию.
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
Line 1 : Mi
Line 2 : MS VB
Line 3 : microsoft
Возвращает определенное количество символов с левой стороны строки.
Right
Функция Right возвращает указанное количество символов с правой стороны данной входной строки.
Синтаксис
Параметр Описание
- String — обязательный параметр. Строка ввода, из которой указанное число символов должно быть возвращено с правой стороны.
- Длина — требуемый параметр. Целое число, которое задает количество возвращаемых символов.
пример
Добавьте кнопку и добавьте следующую функцию.
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
Line 1 : pt
Line 2 : CRIPT
Line 3 : microsoft
Возвращает определенное количество символов с правой стороны строки.
Mid функция возвращает указанное количество символов из заданной входной строки.
Синтаксис
Параметр Описание
- String — обязательный параметр. Строка ввода, из которой задано количество символов, которые нужно вернуть.
- Начало — требуемый параметр. Целое число, определяющее начальную позицию строки.
- Длина — необязательный параметр. Целое число, определяющее количество возвращаемых символов.
Добавьте кнопку и добавьте следующую функцию.
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
Line 1 : icrosoft VBScript
Line 2 : icros
Line 3 : osoft V
Возвращает определенное количество символов из строки на основе указанных параметров.
LTrim
Функция Ltrim удаляет пробелы с левой стороны строки.
Синтаксис
пример
Добавьте кнопку и добавьте следующую функцию.
Когда вы выполняете функцию, она производит следующий вывод.
After Ltrim : Microsoft VBScript
Возвращает строку после удаления пробелов в левой части указанной строки.
RTrim
Функция Rtrim удаляет пробелы с правой стороны строки.
Синтаксис
пример
Добавьте кнопку и добавьте следующую функцию.
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
After Rtrim : Microsoft VBScript
Возвращает строку после удаления пробелов в правой части указанной строки.
Функция Trim удаляет как ведущее, так и конечное пустое пространство данной входной строки.
Синтаксис
пример
Добавьте кнопку и добавьте следующую функцию.
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
After trim : Microsoft VBScript
Возвращает строковое значение после удаления как верхнего, так и конечного пробелов.
Функция Len возвращает длину данной входной строки, включая пробелы.
Синтаксис
пример
Добавьте кнопку и добавьте следующую функцию.
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
Length of var1 is : 18
Length of var2 is : 36
Возвращает длину данной строки.
Replace
Функция Replace заменяет указанную часть строки на определенную строку, указанное количество раз.
Синтаксис
Параметр Описание
- String — обязательный параметр. Строка ввода, которую нужно искать для замены.
- Find — требуемый параметр. Часть строки, которая будет заменена.
- Replacewith — обязательный параметр. Строка замены, которая будет заменена на параметр find.
- Start — необязательный параметр. Задает начальную позицию, из которой нужно искать и заменять строку. Значение по умолчанию — 1.
- Count — необязательный параметр. Указывает количество раз, которое должна выполняться замена.
- Compare — Необязательный параметр. Указывает метод сравнения, который будет использоваться. Значение по умолчанию — 0.
- 0 = vbBinaryCompare — выполняет двоичное сравнение
- 1 = vbTextCompare — выполняет текстовое сравнение
пример
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
Line 1: This is MS VBScript Programming
Line 2: This is vbScript Programming
Line 3: Th## ## VBScript Programming
Line 4: ## VBScript Programming
Line 5: Thi## i## VBScript Programming
Line 6: This is VBSc##ipt P##og##amming
Line 7: This is VBScrip## Programming
Возвращает строку после замены строки другой строкой.
Space
Функция Space заполняет строку конкретным количеством пробелов.
Синтаксис
Параметр Описание
Номер — требуемый параметр. Количество пробелов, которые мы хотим добавить к данной строке.
пример
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
Заполняет строку указанным количеством пробелов.
StrComp
Функция StrComp возвращает целочисленное значение после сравнения двух заданных строк. Он может возвращать любое из трех значений -1, 0 или 1 на основе входных строк для сравнения.
- Если String1 меньше String2, то StrComp возвращает -1
- Если String1 равно String2, то StrComp возвращает 0
- Если String1 больше String2, то StrComp возвращает 1
Синтаксис
Параметр Описание
- String1 — требуемый параметр. Первое строковое выражение.
- String2 — требуемый параметр. Второе строковое выражение.
- Compare — Необязательный параметр. Указывает сравнение строк.Он может принимать следующие значения.
- 0 = vbBinaryCompare — выполняет двоичное сравнение (по умолчанию)
- 1 = vbTextCompare — выполняет сравнение текста
пример
Добавьте кнопку и добавьте следующую функцию.
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
Line 1 :0
Line 2 :1
Line 3 :1
Line 4 :0
Line 5 :1
Возвращает целочисленное значение после сравнения двух указанных строк.
String
Функция String заполняет строку указанным символом для указанного количества раз.
Синтаксис
Параметр Описание
- Номер — требуемый параметр. Целочисленное значение, которое будет повторяться в течение определенного количества раз против параметра символа.
- Символ — требуемый параметр. Значение символа, которое должно повторяться определенное количество раз.
пример
Добавьте кнопку и добавьте следующую функцию.
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
Line 1 :$$$
Line 2 :****
Line 3 :ddddd
Line 4 :AAAAAA
Возвращает строку с указанным символом для указанного количества раз.
StrReverse
Функция StrReverse меняет указанную строку.
Синтаксис
пример
Добавьте кнопку и добавьте следующую функцию.
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
Line 1 : TPIRCSBV
Line 2 : tpircSBV tsriF yM
Line 3 : 54.321
Возвращает строку после изменения последовательности символов данной строки.
Excel vba string
The result delivered is:
The Mid Function has extracted the four letters of AutomateExcel starting from the second character/position/letter which are utom.
Finding the Position of a Substring
The VBA Instr String Function
The VBA Instr Function returns the starting position of a substring within another string. This function is case-sensitive. The syntax of the VBA Instr String Function is:
Instr([Start], String, Substring, [Compare]) where:
- Start (Optional) – This specifies the starting position for the function to search from. If blank, the default value of 1 is used.
- String – The original text.
- Substring– The substring within the original text that you want to find the position of.
- Compare (Optional) – This specifies the type of comparison to make. If blank, binary comparison is used.
-vbBinaryCompare – Binary comparison (Upper and lower case are regarded as different)
-vbTextCompare – Text comparison (Upper and lower case are regarded as the same)
-vbDatabaseCompare – Database comparison (This option is used in Microsoft Access only, and is a comparison based on the database)
The following code shows you how to use the Instr String Function to determine the first occurrence of the substring “Th” within the main string:
The result delivered is:
The Instr Function has returned the position of the first occurrence of the substring “Th” which is 1. Note this function includes the spaces in the count.
The VBA InstrRev String Function
The VBA InstrRev Function returns the starting position of a substring within another string but it starts counting the position, from the end of the string. This function is case-sensitive. The syntax of the VBA InstrRev String Function is:
InstrRev(String, Substring, [Start], [Compare]) where:
- String – The original text.
- Substring – The substring within the original text that you want to find the position of.
- Start (Optional) – This specifies the position to start searching from. If blank, the function starts searching from the last character.
- Compare (Optional) – This specifies the type of comparison to make. If blank, binary comparison is used.
-vbBinaryCompare – Binary comparison (Upper and lower case are regarded as different)
-vbTextCompare – Text comparison (Upper and lower case are regarded as the same)
-vbDatabaseCompare – Database comparison (This option is used in Microsoft Access only, and is a comparison based on the database)
The following code shows you how to use the InstrRev String Function to determine the first occurrence of the substring “Th” within the main string, starting from the end of the string: