The string is a data type that holds a sequence of characters like the alphabet, special characters, and numbers. In VBA we can manipulate strings in such a way, that we can do concatenation, we can also reverse a string, and also add or remove any string in a string. In this article, we will learn about excel VBA strings.
Declaration of String
Strings are a combination of characters. Strings can be declared in the same way as integers or characters are declared in VBA. For example, Dim str As String, here str is a variable with the string data type.
Assigning String value
String value should be surrounded with double quotes whenever it will be assigned to a string variable. For example, str = “I am Ayush”, here “I am Ayush”, is assigned in the double quotes.
Concatenation
Concatenation means the joining of two strings, into one string, using the “&” operator. For example, str = “Ayu”, str1 = “sh”, can be concatenated/joined into one string, str2 by str & str1. The final output of str2 is “Ayush”.
String Manipulation
String manipulation is a concept that provides us with different in-built functions which help to manipulate the string. There are fifteen-plus functions in string manipulation, but here we will discuss some of the most commonly used string manipulation functions. For example, like LCase, UCase, Replace, and StrReverse.
LCase()
The LCase() function, returns the string after converting it into lowercase. The function takes one mandatory argument i.e. input_string.
Syntax of the function: LCase(input_string)
For example, “AYUSH” string has to be converted, into a lowercase string. Use LCase(“AYUSH”), and update the returned value of the function, with the original string i.e. str. The final output will be “ayush”.
UCase()
The UCase() function, returns the string after converting it into uppercase. The function takes one mandatory argument i.e. input_string.
Syntax of the function: UCase(input_string)
For example, “ayush” string has to be converted, into an uppercase string. Use UCase(“ayush”), and update the returned value of the function, with the original string i.e. str. The final output will be “ayush”.
Replace()
The Replace() function, replaces a part of the string with another string. The function takes three mandatory arguments i.e. input_string, string2, string3.
Syntax of the function: Replace(input_string, string2, string3)
input_string: It is the first argument of the replace() function. It takes the required string on which you want to apply the replacement.
string2: It is the second argument of the replace() function. It is the string, which will be replaced in input_string. This string should be a sub-string of input_string.
string3: It is the third argument of the replace() function. It is the new string, which will be replaced in place of string2.
For example, consider a string “Codimh”, the “mh” substring can be replaced with “ng”, in the given input string. Use, Replace(“Codimh”, “mh”, “ng”), function, to replace old string with the new string. The final output of str is Coding.
StrReverse()
The StrReverse() function, returns the reverse of a string. The function takes one mandatory argument i.e. input_string.
Syntax of the function: StrReverse(input_string)
For example, consider a string “Coding”, the given string can be reversed using StrReverse(“Coding”). The returned value of the given function is updated to the string str. The final output of the str is “gnidoC”.
Substring Functions
There are 3 different types of substring functions, these functions return a substring in a string.
Left()
The Left() function, returns the substring from the left side of the string. The function takes two mandatory arguments i.e. input_string and number.
Syntax of the function: Left(input_string, number)
input_string: It is the first argument of the Left() function. It is the input string, for which the left substring has to be returned.
number: It is the second argument of the Left() function. It tells the number of characters to be returned from the left start of the string.
For example, consider a string “Coding”, a left substring of length two can be returned using Left(“Coding”, 2). The final output of the str is “Co”.
Right()
The Right() function, returns the substring from the right side of the string. The function takes two mandatory arguments i.e. input_string and number.
Syntax of the function: Right(input_string, number)
input_string: It is the first argument of the Right() function. It is the input string, for which the right substring has to be returned.
number: It is the second argument of the Right() function. It tells the number of characters to be returned from the right start of the string.
For example, consider a string “Coding”, a right substring of length two can be returned using Right(“Coding”, 2). The final output of the str is “ng”.
Mid()
The Mid() function, returns a substring of any size a user wants. The function takes three mandatory arguments i.e. input_string, number1, and number2.
Syntax of the function: Mid(input_string, number1, number2)
input_string: It is the first argument of the Mid() function. It is the input string, for which the substring has to be returned.
number1: It is the second argument of the Mid() function. It tells the starting index of the substring.
number2: It is the third argument of the Mid() function. It tells the number of characters of the substring.
For example, consider a string “Coding”, and we need to return a substring “odi”. This can be achieved using the Mid(“Coding”, 2, 3) function.
Note: 1-based indexing of string has been considered in the Mid() function.
Length and Position
Len()
The Len() function, returns the length of the string. The function takes one mandatory argument i.e. input_string.
Syntax of the function: Len(input_string)
input_string: It is the first argument of the Len() function. It is the input string, for which the length has to be returned.
For example, consider a string “Coding”, the length of the string can be achieved by using Len(“Coding”). The final output of the program is 6.
InStr()
The InStr() function, returns the first position of a substring in the string. The function takes three mandatory arguments i.e. number1, input_string, and string.
Syntax of the function: InStr(number1, input_string, string)
number1: It is the first argument of the InStr() function. This number tells the position of the start of the search in the input_string.
input_string: It is the second argument of the InStr() function. It is the input string, in which the search has to be made.
string: It is the third argument of the InStr() function. It is the string that has to be searched in the input_string.
For example, consider a string “Coding”, the start of the search is from index 1 i.e. character ‘C’, and the substring to be searched is “o”. This could be achieved using InStr(1, “Coding”, “o”). The final output of the program is 2.
In this Article
- String Variable Type
- Fixed String Variable
- Declare String Variable at Module or Global Level
- Module Level
- Global Level
- Convert Values stored as String
- Convert String Stored as Values
String Variable Type
The String data type is one of the most common data types in VBA. It stores “strings” of text.
To declare an variable String variable, you use the Dim Statement (short for Dimension):
Dim strName as String
To assign a value to a variable, you use the equal sign:
strName = "Fred Smith"
Putting this in a procedure looks like this:
Sub strExample()
'declare the string
Dim strName as string
'populate the string
strName = "Fred Smith"
'show the message box
MsgBox strname
End Sub
If you run the code above, the following message box will be shown.
Fixed String Variable
There are actually 2 types of string variables – fixed and variable.
The “variable” string variable (shown in the previous example) allows your string to be any length. This is most common.
The “fixed” string variable defines the size of the string. A fixed string can hold up to 65,400 characters.
Dim strName as string *20
When you define a fixed variable, the number of characters in the variable is locked in place, even if you use fewer characters.
Notice the spaces in the graphic below – the variable has place holders for the rest of the characters in the string as ‘Fred Smith’ is less than 20 characters.
However, if you have declared a string without specifying the length, then the string will only hold as many characters as are passed to it.
Declare String Variable at Module or Global Level
In the previous example, you declared the String variable within a procedure. Variables declared with a procedure can only be used within that procedure.
Instead, you can declare String variables at the module or global level.
Module Level
Module level variables are declared at the top of code modules with the Dim statement.
These variables can be used with any procedure in that code module.
Global Level
Global level variables are also declared at the top of code modules. However, instead of using the Dim statement, you use the Public statement to indicate that the string variable is available to be used throughout your VBA Project.
Public strName as String
If you declared the string variable at a module level and used in a different module, an error would occur.
However, if you use the Public keyword to declare the string variable, the error would not occur and the procedure would run perfectly.
Convert Values stored as String
There may be a time when you have values in Excel that are stored as text – for example, you may have imported a CSV file which may have brought in text instead of numbers.
Note that the value in A1 is left-aligned, indicating a text value.
You can use a VBA Function can be used to convert these numbers to text
Sub ConvertValue()
'populate the string
strQty = Range("A1")
'populate the double with the string
dblQty = strQty
'populate the range with the number
Range("A1") = dblQty
End Sub
Once you run the code, the number will move to the right-indicating that it is now stored as a number.
This is particularly useful when you loop through a large range of cells.
Sub ConvertValue()
Dim strQty As String, dblQty As Double
Dim rw As Integer, i As Integer
'count the rows to convert
rw = Range("A1", Range("A1").End(xlDown)).Rows.Count
'loop through the cells and convert each one to a number
For i = 0 To rw – 1
'populate the string
strQty = Range("A1").Offset(i, 0)
'populate the double with the string
dblQty = strQty
'populate the range with the number
Range("A1").Offset(i, 0) = dblQty
Next i
End Sub
The result will be that all the cells are then converted to numbers
VBA Coding Made Easy
Stop searching for VBA code online. Learn more about AutoMacro — A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!
Learn More
Convert String Stored as Values
Similarly, there might be values that you need to convert from a string to a value – for example, if you require a leading zero on a telephone number.
Sub ConvertString()
Dim strPhone As String, dblPhone As Double
Dim rw As Integer, i As Integer
'count the rows to convert
rw = Range("A1", Range("A1").End(xlDown)).Rows.Count
'loop through the cells and convert each one to a number
For i = 0 To rw – 1
'populate the string
dblPhone = Range("A1").Offset(i, 0)
'populate the double with the string
strPhone = "'0" & dblPhone
'populate the range with the number
Range("A1").Offset(i, 0) = strphone
Next i
End Sub
Note that you need to begin the text string with an apostrophe (‘), before the zero in order to tell Excel to enter the value as string.
Работа с текстом в коде 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 запустит замедленную печать символов в поле надписи, имитируя печатную машинку.
- ASC
()
— эта функция позволяет вернуть числовой код для переданного символа. Например, ASC(«D») вернет 68. Эту функцию удобно использовать для того, чтобы определить следующую или предыдущую букву. Обычно она используется вместе с функцией Chr
(), которая производит обратную операцию — возвращает символ по переданному его числовому коду.Варианты этой функции — AscB
() и AscW
():- AscB
()
— возвращает только первый байт числового кода для символа. - AscW
()
— возвращает код для символа в кодировке Unicode
- AscB
- 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
StringsStr = «Hello, World!»
MsgBox Mid(sStr, 1, 5)
Dim sStr As String
sStr = «Hello, World!»
MsgBox Mid(sStr, 1, 5) - Len
()
— возможность получить число символов в строке. Часто используется с циклами, операциями замены и т.п. - LCase
()
и UCase
()
— перевести строку в нижний и верхний регистры соответственно. Часто используется для подготовки значения к сравнению, когда при сравнении регистр не важен (фамилии, названия фирм, городов и т.п.)
. - LSet
()
и RSet
()
— возможность заполнить одну переменную символами другой без изменения ее длины (соответственно слева и справа)
. Лишние символы обрезаются, на место недостающих подставляются пробелы. - LTrim
()
, RTrim
()
, Trim
()
— возможность убрать пробелы соответственно слева, справа или и слева, и справа. - Replace
()
— возможность заменить в строке одну последовательность символов на другую.Dim
sStr As
StringsStr = «Hello, World!»
MsgBox Replace(sStr, «Hello»
, «Bay»
)Dim sStr As String
sStr = «Hello, World!»
MsgBox Replace(sStr, «Hello», «Bay») - Space
()
— получить строку из указанного вами количества пробелов;
Еще одна похожая функция — Spc
()
, которая используется для форматирования вывода на консоль. Она размножает пробелы с учетом ширины командной строки. - StrComp
()
— возможность сравнить две строки. - StrConv
()
— возможность преобразовать строку (в Unicode и обратно, в верхний и нижний регистр, сделать первую букву слов заглавной и т.п.)
:Dim
sStr As
StringsStr = «Hello, World!»
MsgBox StrConv(«Hello, World!»
, vbUpperCase)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 - vbUpperCase:
- StrReverse
()
— «перевернуть» строку, разместив ее символы в обратном порядке. Функция работает только начиная от Excel 2000 и выше. Пример использования функции, а так же иные методы переворачивания слова можно посмотреть в этой статье: Как перевернуть слово?
- Tab
()
— еще одна функция, которая используется для форматирования вывода на консоль. Размножает символы табуляции в том количестве, в котором вы укажете. Если никакое количество не указано, просто вставляет символ табуляции. Для вставки символа табуляции в строковое значение можно также использовать константу vbTab
. - String
()
— позволяет получить строку из указанного количества символов (которые опять-таки указываются Вами)
. Обычно используются для форматирования вывода совместно с функцией Len
().
В разделе на вопрос Люди,объясните подробно,пожалуйста,что значит в Паскале функция ord(x) и ей обратная chr(x) ? заданный автором Nick Brown
лучший ответ это Есть специальная таблица символов (расширенного кода ASCII, когда каждому символу принадлежит числовое значение, всего в таблице имеется 255 значений, то есть каждому символу присвоено число,
chr(0..254) преобразует число (один байт) в символ которому принадлежит данное число, например chr(71) результатом будет буква «G», так же нажатие клавиш на клавиатуре выдаёт свой код вот как раз этот код при постановке в данный оператор и выдаст результатом какая клавиша нажата, это я к примеру. А вот оператор ORD(x) делает данный процесс в обратном порядке.
Задаём значение символ и получаем число от 0 до 254 (один байт)
например ORD(«G») даст нам результат 71 (в десятичном формате)
Вот вроде и всё !!!
Ответ от Katyonachik
[новичек]
Все просто, на самом деле)
Орд («Х») — вернет код символа Х из таблицы АСКИИ.
Результатом обратной ей функции будет символ, который соответствует введенному коду (от которого берется функция) из той же таблицы АСКИИ.
Ответ от Jurii
[гуру]
Это не взаимообратные функции!
Функция Ord возвращает порядковый номер значения перечислимого типа.
Счёт начинается с ноля.
Для типа byte функция вернёт собственно значение — порядковый номер совпадает со значением.
Для типа char функция вернёт порядковый номер символа, который (число случайно) совпадает с ASCII кодом.
Функция chr возвращает символ с заданным кодом в ASCII.
Вывод: Просто, в отношении символьных значений, они действительно работают как обратные друг другу.. .
Поэтому можно сказать, что функция ord обратная функции chr, но не наоборот — функция chr не является обратной для функции ord, т. к. область применения функции ord не ограничивается работой с символами!
В этой статье разберем работу со строками в VBA на примерах функций InStr, LCASE, UCase, Left, Right, Mid, LTrim, RTrim, Trim, Len, Replace, Space, StrComp, String, StrReverse.
Строки — это последовательность символов, которая может состоять либо из алфавитов, цифр, специальных символов, либо из всех них. Переменная называется строкой, если она заключена в двойные кавычки «».
Синтаксис
variablename = «string»
Примеры
Строковые функции
Существуют предопределенные функции VBA String, которые помогают разработчикам эффективно работать со строками. Ниже приведены методы String, поддерживаемые в VBA. Пожалуйста, нажмите на каждый из методов, чтобы знать подробно.
Название функции и описание
InStr
Функция InStr возвращает первое вхождение одной строки в другую строку. Поиск происходит слева направо.
Синтаксис
InStr(string1,string2[,compare])
Параметр Описание
- Пуск — необязательный параметр. Указывает начальную позицию для поиска. Поиск начинается с первой позиции слева направо.
пример
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 возвращает первое вхождение одной строки в другую строку. Поиск происходит справа налево.
Синтаксис
InStrRev(string1,string2[,start,])
Параметр Описание
- String1 — требуемый параметр. Строка для поиска.
- String2 — требуемый параметр. Строка, по которой выполняется поиск String1.
- Пуск — необязательный параметр. Указывает начальную позицию для поиска. Поиск начинается с первой позиции справа налево.
- Compare — Необязательный параметр. Указывает сравнение строк.Он может принимать следующие значения.
- 0 = vbBinaryCompare — выполняет двоичное сравнение (по умолчанию)
- 1 = vbTextCompare — выполняет сравнение текста
пример
Добавьте кнопку и установите следующую функцию.
Private Sub Constant_demo_Click()
var = «Microsoft VBScript»
msgbox(«Line 1: » & InStrRev(var,»s»,10))
msgbox(«Line 2: » & InStrRev(var,»s»,7))
msgbox(«Line 3: » & InStrRev(var,»f»,-1,1))
msgbox(«Line 4: » & InStrRev(var,»t»,5))
msgbox(«Line 5: » & InStrRev(var,»i»,7))
msgbox(«Line 6: » & InStrRev(var,»i»,7))
msgbox(«Line 7: » & InStrRev(var,»VB»,1))
End Sub
После выполнения вышеуказанного скрипта он производит следующий результат.
Line 1: 6
Line 2: 6
Line 3: 8
Line 4: 0
Line 5: 2
Line 6: 2
Line 7: 0
Возвращает первое вхождение указанной подстроки. Поиск происходит справа налево.
LCASE
Функция LCase возвращает строку после преобразования введенной строки в строчные буквы.
Синтаксис
Lcase(String)
пример
Private Sub Constant_demo_Click()
var = «Microsoft VBScript»
msgbox(«Line 1: » & LCase(var))
var = «MS VBSCRIPT»
msgbox(«Line 2: » & LCase(var))
var = «microsoft»
msgbox(«Line 3: » & LCase(var))
End Sub
Line 1: microsoft vbscript
Line 2: ms vbscript
Line 3: microsoft
Возвращает нижний регистр указанной строки.
UCase
Функция UCase возвращает строку после преобразования введенной строки в буквы буквы UPPER.
Синтаксис
UCase(String)
пример
Добавьте кнопку и поместите следующую функцию внутри нее.
Private Sub Constant_demo_Click()
var = «Microsoft VBScript»
msgbox(«Line 1: » & UCase(var))
var = «MS VBSCRIPT»
msgbox(«Line 2: » & UCase(var))
var = «microsoft»
msgbox(«Line 3: » & UCase(var))
End Sub
После выполнения вышеуказанного скрипта он производит следующий вывод.
Line 1: MICROSOFT VBSCRIPT
Line 2: MS VBSCRIPT
Line 3: MICROSOFT
Возвращает верхний регистр указанной строки.
Left
Функция Left возвращает указанное количество символов с левой стороны данной входной строки.
Синтаксис
Left(String, Length)
Параметр Описание
- String — обязательный параметр. Строка ввода, из которой указанное число символов должно быть возвращено с левой стороны.
- Длина — требуемый параметр. Целое число, определяющее количество возвращаемых символов.
пример
Добавьте кнопку и добавьте следующую функцию.
Private Sub Constant_demo_Click()
Dim var as Variant
var = «Microsoft VBScript»
msgbox(«Line 1: » & Left(var,2))
var = «MS VBSCRIPT»
msgbox(«Line 2: » & Left(var,5))
var = «microsoft»
msgbox(«Line 3: » & Left(var,9))
End Sub
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
Line 1: Mi
Line 2: MS VB
Line 3: microsoft
Возвращает определенное количество символов с левой стороны строки.
Right
Функция Right возвращает указанное количество символов с правой стороны данной входной строки.
Синтаксис
Right(String, Length)
Параметр Описание
- String — обязательный параметр. Строка ввода, из которой указанное число символов должно быть возвращено с правой стороны.
- Длина — требуемый параметр. Целое число, которое задает количество возвращаемых символов.
пример
Добавьте кнопку и добавьте следующую функцию.
Private Sub Constant_demo_Click()
var = «Microsoft VBScript»
msgbox(«Line 1: » & Right(var,2))
var = «MS VBSCRIPT»
msgbox(«Line 2: » & Right(var,5))
var = «microsoft»
msgbox(«Line 3: » & Right(var,9))
End Sub
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
Line 1: pt
Line 2: CRIPT
Line 3: microsoft
Возвращает определенное количество символов с правой стороны строки.
Mid
Mid функция возвращает указанное количество символов из заданной входной строки.
Синтаксис
Mid(String,start[,Length])
Параметр Описание
- String — обязательный параметр. Строка ввода, из которой задано количество символов, которые нужно вернуть.
- Начало — требуемый параметр. Целое число, определяющее начальную позицию строки.
- Длина — необязательный параметр. Целое число, определяющее количество возвращаемых символов.
Добавьте кнопку и добавьте следующую функцию.
Private Sub Constant_demo_Click()
Dim var as Variant
var = «Microsoft VBScript»
msgbox(«Line 1: » & Mid(var,2))
msgbox(«Line 2: » & Mid(var,2,5))
msgbox(«Line 3: » & Mid(var,5,7))
End Sub
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
Line 1: icrosoft VBScript
Line 2: icros
Line 3: osoft V
Возвращает определенное количество символов из строки на основе указанных параметров.
LTrim
Функция Ltrim удаляет пробелы с левой стороны строки.
Синтаксис
LTrim(String)
пример
Добавьте кнопку и добавьте следующую функцию.
Private Sub Constant_demo_Click()
Dim var as Variant
var = » Microsoft VBScript»
msgbox «After Ltrim: » & LTrim(var)
End Sub
Когда вы выполняете функцию, она производит следующий вывод.
After Ltrim: Microsoft VBScript
Возвращает строку после удаления пробелов в левой части указанной строки.
RTrim
Функция Rtrim удаляет пробелы с правой стороны строки.
Синтаксис
RTrim(String)
пример
Добавьте кнопку и добавьте следующую функцию.
Private Sub Constant_demo_Click()
Dim var as Variant
var = «Microsoft VBScript »
msgbox(«After Rtrim: » & RTrim(var))
End Sub
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
After Rtrim: Microsoft VBScript
Возвращает строку после удаления пробелов в правой части указанной строки.
Trim
Функция Trim удаляет как ведущее, так и конечное пустое пространство данной входной строки.
Синтаксис
Trim(String)
пример
Добавьте кнопку и добавьте следующую функцию.
Private Sub Constant_demo_Click()
var = «Microsoft VBScript»
var = » Microsoft VBScript »
msgbox («After Trim: » & Trim(var))
End Sub
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
After trim: Microsoft VBScript
Возвращает строковое значение после удаления как верхнего, так и конечного пробелов.
Len
Функция Len возвращает длину данной входной строки, включая пробелы.
Синтаксис
Len(String)
пример
Добавьте кнопку и добавьте следующую функцию.
Private Sub Constant_demo_Click()
Dim var1 as Variant
Dim var2 as Variant
var1 =»Microsoft VBScript»
msgbox(«Length of var1 is: » & Len(var1))
var2 = » Microsoft VBScript »
msgbox («Length of var2 is: » & Len(var2))
End Sub
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
Length of var1 is: 18
Length of var2 is: 36
Возвращает длину данной строки.
Replace
Функция Replace заменяет указанную часть строки на определенную строку, указанное количество раз.
Синтаксис
Replace(string,find,replacewith[,start[,count[,compare]]])
Параметр Описание
- String — обязательный параметр. Строка ввода, которую нужно искать для замены.
- Find — требуемый параметр. Часть строки, которая будет заменена.
- Replacewith — обязательный параметр. Строка замены, которая будет заменена на параметр find.
- Start — необязательный параметр. Задает начальную позицию, из которой нужно искать и заменять строку. Значение по умолчанию — 1.
- Count — необязательный параметр. Указывает количество раз, которое должна выполняться замена.
- Compare — Необязательный параметр. Указывает метод сравнения, который будет использоваться. Значение по умолчанию — 0.
- 0 = vbBinaryCompare — выполняет двоичное сравнение
- 1 = vbTextCompare — выполняет текстовое сравнение
пример
Private Sub Constant_demo_Click()
Dim var as Variant
var = «This is VBScript Programming»
«VBScript to be replaced by MS VBScript
msgbox(«Line 1: » & Replace(var,»VBScript»,»MS VBScript»))
«VB to be replaced by vb
msgbox(«Line 2: » & Replace(var,»VB»,»vb»))
«»is» replaced by ##
msgbox(«Line 3: » & Replace(var,»is»,»##»))
«»is» replaced by ## ignores the characters before the first occurence
msgbox(«Line 4: » & Replace(var,»is»,»##»,5))
«»s» is replaced by ## for the next 2 occurences.
msgbox(«Line 5: » & Replace(var,»s»,»##»,1,2))
«»r» is replaced by ## for all occurences textual comparison.
msgbox(«Line 6: » & Replace(var,»r»,»##»,1,-1,1))
«»t» is replaced by ## for all occurences Binary comparison
msgbox(«Line 7: » & Replace(var,»t»,»##»,1,-1,0))
End Sub
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
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 заполняет строку конкретным количеством пробелов.
Синтаксис
space(number)
Параметр Описание
Номер — требуемый параметр. Количество пробелов, которые мы хотим добавить к данной строке.
пример
Private Sub Constant_demo_Click()
Dim var1 as Variant
var1 = «Microsoft»
Dim var2 as Variant
var2 = «VBScript»
msgbox(var1 & Space(2)& var2)
End Sub
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
Microsoft VBScript
Заполняет строку указанным количеством пробелов.
StrComp
Функция StrComp возвращает целочисленное значение после сравнения двух заданных строк. Он может возвращать любое из трех значений -1, 0 или 1 на основе входных строк для сравнения.
- Если String1 меньше String2, то StrComp возвращает -1
- Если String1 равно String2, то StrComp возвращает 0
- Если String1 больше String2, то StrComp возвращает 1
Синтаксис
StrComp(string1,string2[,compare])
Параметр Описание
- String1 — требуемый параметр. Первое строковое выражение.
- String2 — требуемый параметр. Второе строковое выражение.
- Compare — Необязательный параметр. Указывает сравнение строк.Он может принимать следующие значения.
- 0 = vbBinaryCompare — выполняет двоичное сравнение (по умолчанию)
- 1 = vbTextCompare — выполняет сравнение текста
пример
Добавьте кнопку и добавьте следующую функцию.
Private Sub Constant_demo_Click()
Dim var1 as Variant
msgbox(«Line 1:» & StrComp(«Microsoft»,»Microsoft»))
msgbox(«Line 2:» &StrComp(«Microsoft»,»MICROSOFT»))
msgbox(«Line 3:» &StrComp(«Microsoft»,»MiCrOsOfT»))
msgbox(«Line 4:» &StrComp(«Microsoft»,»MiCrOsOfT»,1))
msgbox(«Line 5:» &StrComp(«Microsoft»,»MiCrOsOfT»,0))
End Sub
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
Line 1:0
Line 2:1
Line 3:1
Line 4:0
Line 5:1
Возвращает целочисленное значение после сравнения двух указанных строк.
String
Функция String заполняет строку указанным символом для указанного количества раз.
Синтаксис
String(number,character)
Параметр Описание
- Номер — требуемый параметр. Целочисленное значение, которое будет повторяться в течение определенного количества раз против параметра символа.
- Символ — требуемый параметр. Значение символа, которое должно повторяться определенное количество раз.
пример
Добавьте кнопку и добавьте следующую функцию.
Private Sub Constant_demo_Click()
msgbox(«Line 1:» & String(3,»$»))
msgbox(«Line 2:» & String(4,»*»))
msgbox(«Line 3:» & String(5,100))
msgbox(«Line 4:» & String(6,»ABCDE»))
End Sub
Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.
Chr
Функция Chr
Chr(CharCode)
Chr$(CharCode)
ChrB(CharCode)
ChrW(CharCode)
Функция Chr
(Ch
aracter
)позволяет получить символ по значению его числового кода ANSI или Unicode
Возвращаемое значение
Функции Chr
, ChrB
, ChrW
возвращают значение субтипа String типа Variant , содержащее символ, соответствующий указанному коду символа ANSI или Unicode. Функции Chr$
, ChrB$
, ChrW$
возвращают соответственно значение типа String
Примечание
Chr
и Chr$
возвращают символ по его кодировке в стандарте ANSI
ChrB
и ChrB$
возвращают однобайтовую
строку
ChrW
возвращает символ Unicode, однако в системах, не поддерживающих Unicode, ее поведение аналогично Chr
Использование в параметре CharCode
значения больше, чем 255, генерирует ошибки стадии выполнения 5: Invalid procedure call or argument или 6: Overflow
Параметры
CharCode Обязательный аргумент является значением типа Long , определяющим символ. Обычно, функция Chr
применяется при вставке в текстовые строки непечатных символов(возврат каретки, перевод строки, табулятор и т.д.). Коды 0-31 соответствуют стандартным управляющим символам ASCII. Например, Chr
(10) возвращает символ перевода строки
Пример
Dim retval
retval = Chr
(65)
Debug.Print retval » возвращается A
Категория
Итак, продолжаем наши уроки Паскаль для начинающих. В прошлом уроке мы разобрали , но там мы упомянули про символы, поэтому прежде чем глубоко изучать тип данных , мы узнаем о типе Char. Символьный тип данных Char
— тип данных, значениями которого являются одиночные символы. Данный тип может содержать всего один любой символ (Например: «*», «/», «.», «!» и другие). Каждый такой символ занимает 8 бит памяти, всего существует 256 восьмибитовых символов. Все символы, используемые символьным типом Char записаны в таблице символов ASCII (American Standart Code for Information Interchange) или Американский стандарт кода для обмена информацией.
Символьные константы заключаются в апострофы, например «.», «*», «7», «s». Также символьную константу можно записать с помощью символа — «решетки», например #185 — выведет символ под номером 185 из таблицы ASCII (это символ «№»).
К символьному типу применимы 5 функций: Ord, Chr, Pred, Succ и Upcase.
Функция Ord
преобразовывает символ в её числовой код из таблицы ASCII
. Например для символа «№» она возвратит значение 185. Функция Chr обратна функции Ord. Функция Chr
преобразует числовой код символа в сам символ, например, если взять числовой код 64, то функция Chr (64) возвратит символ «@».
Пример программы на Паскаль с использованием функции Ord:
Begin //Начало программы
writeln (ord (x)); //Вывод номера в таблице ASCII
end. //Конец программы
Пример программы на Паскаль с использованием функции Chr:
Var x:integer; // Описание переменных (x — целочисленный тип)
Begin //Начало программы
readln (x); //Считывание переменной
writeln (chr (x)); //Вывод символа по номеру в таблице ASCII
end. //Конец программы
Функция Pred
возвращает значение предыдущего символа из таблицы ASCII, например для символа «P» (Pred (P)) эта функция возвратит символ «O». Функция Succ
обратная функции Pred. Для символа «P» функция Succ (P) возвратит символ «Q», то есть следующий символ из вышеописанной таблицы ASCII.
Пример программы на Паскаль с использованием функций Pred и Succ:
Var x:char; // Описание переменных (x — символьный тип)
Begin //Начало программы
readln (x); //Считывание переменной
writeln (pred (x)); //Вывод предыдущего символа в таблице ASCII
writeln (succ (x)); //Вывод следующего символа в таблице ASCII
end. //Конец программы
Функция UpCase
применима только для строчных букв английского алфавита. Данная функция преобразует строчные английские буквы в заглавные.
Пример программы на Паскаль с использованием функции UpCase:
Приложение к уроку — таблицы символов ASCII:
На сегодня урок окончен. Помните, что программирование на паскале
просто и является основой для многих языков программирования.
Loading…
Содержание
- 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