Vba word текстовые функции

В этой статье разберем работу со строками в VBA на примерах функций InStr, LCASE, UCase, Left, Right, Mid, LTrim, RTrim, Trim, Len, Replace, Space, StrComp, String, StrReverse.

Строки — это последовательность символов, которая может состоять либо из алфавитов, цифр, специальных символов, либо из всех них. Переменная называется строкой, если она заключена в двойные кавычки «».

Содержание:

  • Синтаксис
  • Примеры
  • Строковые функции
  • Название функции и описание
  • InStr
  • Синтаксис
  • Параметр Описание
  • пример
  • Синтаксис
  • Параметр Описание
  • пример
  • LCASE
  • Синтаксис
  • пример
  • UCase
  • Синтаксис
  • пример
  • Left
  • Синтаксис
  • Параметр Описание
  • пример
  • Right
  • Синтаксис
  • Параметр Описание
  • пример
  • Mid
  • Синтаксис
  • Параметр Описание
  • LTrim
  • Синтаксис
  • пример
  • RTrim
  • Синтаксис
  • пример
  • Trim
  • Синтаксис
  • пример
  • Len
  • Синтаксис
  • пример
  • Replace
  • Синтаксис
  • Параметр Описание
  • пример
  • Space
  • Синтаксис
  • Параметр Описание
  • пример
  • StrComp
  • Синтаксис
  • Параметр Описание
  • пример
  • String
  • Синтаксис
  • Параметр Описание
  • пример
  • StrReverse
  • Синтаксис
  • пример

Синтаксис

variablename = "string"

Примеры

str1 = "string"   ' Only Alphabets
str2 = "132.45"   ' Only Numbers
str3 = "!@#$;*"  ' Only Special Characters
Str4 = "Asc23@#"  ' Has all the above

Строковые функции

Существуют предопределенные функции VBA String, которые помогают разработчикам эффективно работать со строками. Ниже приведены методы String, поддерживаемые в VBA. Пожалуйста, нажмите на каждый из методов, чтобы знать подробно.

Название функции и описание

Функция InStr возвращает первое вхождение одной строки в другую строку. Поиск происходит слева направо.

Синтаксис

InStr([start,]string1,string2[,compare])

Параметр Описание

  • Пуск — необязательный параметр. Указывает начальную позицию для поиска. Поиск начинается с первой позиции слева направо.
  • String1 — требуемый параметр. Строка для поиска.
  • String2 — требуемый параметр. Строка, по которой выполняется поиск String1.
  • Compare — Необязательный параметр. Указывает сравнение строк.Он может принимать следующие значения.
  • 0 = vbBinaryCompare — выполняет двоичное сравнение (по умолчанию)
  • 1 = vbTextCompare — выполняет сравнение текста

пример

Добавьте кнопку и добавьте следующую функцию.

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,[compare]])

Параметр Описание

  • 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

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

Line 1 :$$$
Line 2 :****
Line 3 :ddddd
Line 4 :AAAAAA

Возвращает строку с указанным символом для указанного количества раз.

StrReverse

Функция StrReverse меняет указанную строку.

Синтаксис

StrReverse(string)

пример

Добавьте кнопку и добавьте следующую функцию.

Private Sub Constant_demo_Click()
   msgbox("Line 1 : " & StrReverse("VBSCRIPT"))
   msgbox("Line 2 : " & StrReverse("My First VBScript"))
   msgbox("Line 3 : " & StrReverse("123.45"))
End Sub

Когда вы выполняете вышеуказанную функцию, она производит следующий вывод.

Line 1 : TPIRCSBV
Line 2 : tpircSBV tsriF yM
Line 3 : 54.321

Возвращает строку после изменения последовательности символов данной строки.

 С уважением, авторы сайта Компьютерапия

Понравилась статья? Поделитесь ею с друзьями и напишите отзыв в комментариях!

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

VBA функции работы со строками

ASC(строковое значение) – применяется для получения числового ASCII кода заданного символа. В качестве параметра можно передать как целую строку (проверка произойдет для первого символа в строке), так и один символ или пробел.

Chr(код символа) – работает в обратном порядке по сравнению с предыдущей функцией. В качестве параметра мы передаем ASCII код, а на выходе получаем символ по заданному коду. Данная строковая VBA функция актуальна в тех случаях, когда нужно вывести служебный символ, например, кавычки, хотя чаще, используются именованные VBA константы.

InStr(строка1, строка2, [старт]) – предназначена для поиска последовательности знаков (строка2) в заданной строке (строка1). Можно также задать начальную позицию для поиска вхождения (необязательный параметр “старт”).

InStrRev(строка1, строка2, [старт]) – аналог предыдущей функции, но поиск происходит в обратном порядке.

Left(строка, длина) – позволяет вернуть заданное количество знаков (параметр “длина”) для выбранной строки (параметр “ строка ”), начиная слева.

Right(строка, длина) – позволяет вернуть заданное количество знаков для выбранной строки, начиная справа.

Mid (строка, длина, старт) – позволяет вернуть заданное количество знаков (параметр “длина”) для выбранной строки, начиная с заданной позиции (параметр “старт”).

Len(строка) – определяет численное количество символов в строке.

LCase(строка) – предназначена для преобразования всех символов в переданной строке в нижний регистр.

UCase(строка) – предназначена для преобразования всех символов в переданной строке в верхний регистр.

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

RSet(строка, длина) – логика работы та же, что и для предыдущей vba функции работы со строками, но процесс происходит справа.

LTrim(строка) – удалить пробелы слева в строке

RTrim(строка) – удалить пробелы справа в строке

Trim(строка) – удалить пробелы справа и слева в строке

Replace() – замена в строке одних символов на другие

Space(количество_пробелов) – формирование строки из заданного количества пробелов

String(количество, символ) – формирование строки из заданного количества прописанных символов

Spc() – применяется для формирования вывода данных в консольном окне командной строки. Происходит размножение пробелов, учитывая ширину командной строки.

StrComp(строка1, строка2) – сравнение двух строк, вернет 0 при равенстве, и -1 в противном случае.

StrConv(строка, метод, [LCID]) – данная функция vba является универсальной, так как позволяет преобразовать заданную строку в различные вариации (верхний и нижний регистр, кодировка, перевод байт).

  • Строка – собственно, строковое значение, над которым нужно провести преобразование.
  • Метод – задает метод преобразования, данный параметр может принимать следующие значения:
  1. vbUpperCase – перевод в верхний регистр, значение 1
  2. vbLowerCase – перевод в нижний регистр, значение 2
  3. vbPropperCase – перевод первых символов всех слов в верхний регистр, а остальные символы – в нижний, значение 3.
  4. vbWide – применяется для кодировки восточных языков. Перевод символов в один байт с двухбайтовых. Значение 4.
  5. vbNarrow – аналог предыдущему параметру, но тут происходит перевод двух байт в один, значение 8.
  6. vbKatakana – происходит преобразование символов алфавита Хирагана в символы для алфавита Катана, применим для японского языка, значение 16.
  7. vbHiragana – аналог предыдущего параметра, но тут происходит преобразования вида Катана в Хирагана, значение 32. VBA строковые функции
  8. vbUnicode – перевод заданной строки в Unicode кодировку, значение 64.
  9. vbFormatUnicode – перевод из кодировки Unicode в стандартную, значение 128.
  • LCID – параметр не является обязательным, (vba строковые функции) он задает идентификатор региональных настроек. По умолчанию значение LocaleId, то есть, то значение, что установлено в панели управления.

StrReverse(строка) – инвертировать расположение знаков в строке, проще говоря, “отзеркаливает”.

Tab() – позволяет размножить символы табуляции в заданном количестве. Помимо этого, для вставки табуляции применяется именованная константа vbTab.

Аналогичные VBA строковые функции используются и в языке VBScript сервера сценариев Windows Script Host.

vba string functionsVisual Basic for Applications or VBA is an event-driven programming language. It is used to automate tasks in the Microsoft Office suite of products – especially repetitive tasks. It enables programmers use this tool to write effective and efficient macros. VBA contains a host of useful functions, on top of those present in Excel or the other MS Office products.

Today, in this beginner’s level tutorial we’ll walk you through the basics of string usage in VBA, and then take a look at the important VBA string functions. If you’re new to VBA, you should first take this introductory course to using macros with VBA.

What is a String

A string, in VBA, is a type of data variable which can consist of text, numerical values, date and time and alphanumeric characters. Strings are a frequently used to store all kinds of data and are important part of VBA programs. There are five basic kinds of string operations which are commonly used in VBA. Let’s take a closer look at them.

1. Concatenation

The Ampersand (&) sign concatenates two strings into a new string. For instance “Welcome”&”Home” yields the string “WelcomeHome”. The syntax for it is

string1 & string2 [& string3 & string_n]

2. Formatting

There are bunch of formatting related functions you can use to represent the string in whichever way you need. A few such  commonly used functions are:

  • Format()-  This function formats the string according to the format you’ve chosen from a predefined set. They syntax is

Format ( expression, [ format ] )

For example:

Format(Now(), “Long Time”)  will display the current system time in the long  time format.

Format(Now(), “Long Date”)  will display the current system date in the long date format.

  • FormatCurrency() –  This formats an expression as a currency value.
  • FormatDateTime() – This function returns a formatted date/time value.
  • FormatNumber() – You can use this function to get a formatted number expression.
  • FormatPercent() – Use this function to get a formatted percent expression.

This course on VBA for Excel can show you other kinds of format manipulations in VBA.

3. Substrings

As the name suggests,  a substring function divides a string into different parts, per the specified criteria. Here are the functions which fall under this category.

  • Right()- Breaks out a substring from the right side of the main string. The second argument is the specified number of characters. The syntax is
Right (“String”, n)
Right (“Good Morning”, 4)    returns “ning”.
  • Mid()-  This function extracts a substring which contains a specified number of characters, from the specified position. The syntax is
Mid(String, position, n)

where position is the starting position of the string from which the substring is to be taken and n is the specified number of characters. Here’s an example

Mid(“Good Morning”, 7, 5) returns "ornin"
  • Left()- Obtains a specified number of characters from the left side of a string.  The syntax is
Left(“String”, n)

where n is the specified number of characters. Here’s an example

Left(“Good Morning”, 4) returns “Good”
  • Split()- It splits the original string into substrings. The syntax is
Split (string, Delimiter, limit)

where string is the input string to be separated. Delimiter character separates the string into parts. The default delimiter is the space character ” “. Limit is the maximum number of substrings. Let’s see an example

Split ("This is a test string", " ") yields the following substrings "This" "is" "a" "test" "string".

Learn more about other VBA functions and macros with this course.

4. Conversion Functions

These functions convert a string’s case – from uppercase to lowercase and vice versa.

  • LCase()- Converts a string or character to lowercase.
LCase(“Good Morning”) returns “good morning”
  • UCase()- COnverts the string to uppercase.
UCase(“Good Morning”) returns “GOOD MORNING”.

5. Find and Replace

These functions come in handy to search for certain substrings, and perhaps replacing them with specified strings.

  • Replace() – Use this function to replace a substring with another substring. The syntax is
Replace(source_string,find_string,replacement_string).

Here source_string is the source string, that you want to search in. find_string is the string to be searched for in the source string.

replacement_string will replace find in source string. For example:

Replace("wonderful", "der", "bat") will return "wonbatful"
  • InStr()- Use this function to get the start position of the first occurrence of a string in another. For example:
Instr(1, “Good Morning”,”Morning”) returns the integer 6.
  • InStrRev()- This function is similar to the previous one. Only difference is that it starts from the right side of the string.

List of other VBA string functions

Here we have put together some of the other most commonly used VBA string functions. Take a look.

  • Asc , AscW()– This function is used to get an integer value which represents the ASCII code corresponding to a character.
  • Chr , ChrW()–  This function returns a character corresponding to the ASCII code passed as parameter.
  • Filter()– Use this function to get a zero-based array which contains a subset of a string array.
  • Join()- This function is used to join substrings together.
  • Len()– Returns the length of a string, including the empty spaces.
  • LSet– This function aligns the string to the left.
  • Ltrim- Use this function to remove leading spaces. For example
Ltrim(“    Good Morning”) returns “Good Morning”
  • RTrim()- This is similar to the Ltrim function and lets you remove trailing spaces.
  • Trim()- This function is a super-set of the previous two. It removes both leading and trailing spaces from a string.
  • RSet– This function align the string to the right.
  • Space() – This function is used to put spaces in a string.
  • StrComp()– This compares two strings and lets you know whether they are identical or different.
  • StrConv()-This function converts the string as specified by the user.
  • StrReverse()- This function reverses a string in place. For example
StrReverse("Hello") will return "olleH"

Hope this tutorial helped you learn more about VBA string functions. Do try them out on your own to get a better grip on them. Note that string manipulation is just one part of VBA. You can learn more about other VBA macros and functions with this ultimate VBA course.

Примеры использования функций VBA

Удаление ненужных символов

Зачастую строки в программе содержат ненужные символы пробелов в конце или в начале строки, которые необходимо удалить, т.к. посторонние начальные или конечные пробелы в строке могут вызвать «неполадки» в работе программы.

В VBA имеются три функции, предназначенные для удаления начальных и конечных пробелов из строки: LTrim, RTrim, Trim. Следует иметь ввиду, что эти функции на самом деле не изменяют исходную строку, а возвращают копию строки с удаленными лишними пробелами.

Определение длины строки

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

Следует быть внимательными со строками фиксированной длины. Поскольку строка фиксированной длины имеет всегда одну и ту же длину, функция Len всегда возвращает объявленную длину строки, независимо от фактической длины строки. Например, если в строковой переменной фиксированной длины StrokeName, имеющей длину 15 символов, фактически находится слово «солнце», то функция Len(StrokeName) возвратит результат 15. Чтобы в таком случае узнать фактическую длину строки (в нашем случае — 6), необходимо использовать следующую комбинацию функций: Len(Trim(StrokeName)).

Сравнение и поиск строк

В VBA имеются две функции, помогающих сравнивать строки: StrComp, InStr.

Функция StrComp

StrComp (String1, String2 [, Compare])

String1, String2 — любые два строковых выражения, которые необходимо сравнивать.

Compare — необязательный аргумент, может быть любой из следующих предопределенных констант (если он опускается, то используется текущая установка Option Compare):

  • vbBinaryCompare — бинарное сравнение двух строк;
  • vbTextCompare — текстовое сравнение двух строк;
  • vbDatabaseCompare — используется только в Microsoft Access.

При выполнении StrComp возвращается одно из следующих значений:

  • -1, если String1 меньше String2;
  • 0, если String1 и String2 равны;
  • 1, если String1 больше String2.

В вышеприведенном листинге в текстовом режиме сравниваются две строки: «Строка по умолчанию» и » Строка по умолчанию». Результат сравнения = 1, т.е. «Строка по умолчанию» больше, чем » Строка по умолчанию».

Поэкспериментируйте с разнообразными строками для лучшего понимания работы функции StrComp.

Функция InStr

Функция InStr дает возможность определить, содержит ли одна строка другую строку.

StrComp ([Start, ] String1, String2 [, Compare])

String1, String2 — любые допустимые строковые выражения. Функция проверяет содержится ли String1 в String2.

Compare — необязательный аргумент, может быть любой из следующих предопределенных констант (если он опускается, то используется текущая установка Option Compare):

  • vbBinaryCompare — бинарное сравнение двух строк;
  • vbTextCompare — текстовое сравнение двух строк;
  • vbDatabaseCompare — используется только в Microsoft Access.

Start — необязательный аргумент, является численным выражением и указывает положение символа в String1, с которого должна начинаться проверка.

InStr возвращает число, обозначающее положение символа в String1, где было обнаружено String2. Если InStr не находит String2 в String1, то возвращается 0. Если String1 (или String2) имеет значение Null, то функция также возвращает Null.

Разбиение строки

Иногда возникает необходимость разбиения строки на составляющие части. В VBA эту задачу решают три функции: Left, Right, Mid.

Функция Left

Left (String, Length)

String — любое допустимое строковое выражение.

Length — любое численное значение.

Функция возвращает копию String, начиная с первого символа и включая количество символов, заданных с помощью Length. Если Length является числом, большим, чем фактическая длина String, то возвращается все строковое выражение String.

Функция Right

Right (String, Length)

String — любое допустимое строковое выражение.

Length — любое численное значение.

Функция возвращает копию String, начиная с последнего символа и включая справа налево количество символов, заданных с помощью Length. Если Length является числом, большим, чем фактическая длина String, то возвращается все строковое выражение String. Функция Right всегда копирует символы от конца строки к ее началу.

Функция Mid

Mid (String, Start, [, Length])

String — любое допустимое строковое выражение.

Length, Start — любые численные значения.

Функция Mid возвращает копию String, начиная с положения символа в String, задаваемого с помощью аргумента Start . Необязательный аргумент Length определяет количество копируемых в Mid символов из String. Если Start содержит большее число, чем фактическая длина String, то возвращается пустая строка.

Символы, которые нельзя ввести с клавиатуры

Зачастую случается, что надо ввести какой-либо символ, для которого отсутствует клавиша на клавиатуре (например, символ копирайта). Другая ситуация — когда надо в строку включить служебный символ VBA (самый распространенный случай — включение двойных кавычек).

Чтобы включить в строку символы, которые невозможно ввести с клавиатуры, или которые имеют особое значение для VBA, используется функция Chr.

Charcode — любое численное выражение, являющееся допустимым кодом для набора символов, используемого компьютером. Должен быть целым числом от 0 до 255.

Функция Chr принимает код отдельного символа в качестве аргумента и возвращает строку, содержащую соответствующий этому коду символ. Данная функция использована в вышеприведенных листингах для перевода строки при выводе сообщения на экран Chr (13).

Поскольку символы, используемые для начала новой строки, являются очень важными при форматировании сообщений и других строковых данных, которыми манипулируют VBA-процедуры, имеется несколько предопределенных констант для этих символов, чтобы не было необходимости использовать функцию Chr:

  • vbCr — символ возврата каретки. Эквивалент Chr(13)
  • vbLf — символ смещения на одну строку. Эквивалент Chr(10)
  • vbCrLf — символ возврата каретки+смещения на одну строку. Эквивалент Chr(13)+ Chr(10)
  • vbTab — символ табуляции. Эквивалент Chr(9)

Для просмотра списка код-символ надо открыть справочную систему VBA и по запросу «character sets» будет представлена соответствующая таблица.


Форматирование значений данных

Очень часто формат данных на выходе программы по тем или иным причинам нас не совсем устраивает. Эту задачу решает функция Format.

VBA-функция Format идентична функции Format в Excel и использует те же символы-заполнители форматирования данных.

Format (Expression [, Format[, Firstdayofweek [, Firstweekofyear]]])

Expression — любое допустимое выражение (обязательный аргумент).

Format — допустимое выражение именованного или определенного пользователем формата.

Firstdayofweek — константа, которая определяет первый день недели.

Firstweekofyear — константа, которая определяет первую неделю года.

Чтобы использовать функцию Format, надо либо задать предопределенный формат, либо создать образ определенного формата, используя символы-заполнители.

Vba word строковые функции

Для данных типа String существует только одна операция — конкатенация (объединение). Например, результатом операции конкатенации трех строковых значений «Петр» & » » & «Иванович» будет строка «Петр Иванович». Возможно также использование другого оператора для операции конкатенации, например: «десяти» + «тысячник». Разница между этими выражениями состоит в том, что в первом случае операндами могут быть значения любого типа (они просто будут преобразовываться в строковые), а во втором — оба операнда должны иметь тип String.

Для работы со строками существует большое количество функций (таблица. Функции работы со строками).

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

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

Для сравнения строковых значений также применяется оператор 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.
  • Создайте форму аналогично приведенному рисунку.
  • Пропишите обработчик события кнопки ОК.
  • Откомпилируйте программу.
  • Запустите форму на выполнение.

Форма примера в режиме конструктора и в рабочем состоянии

Работа со строками в 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

Возвращает строку после изменения последовательности символов данной строки.

Урок 14 по VBA — функции работы со строками

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

VBA функции работы со строками

ASC (строковое значение) – применяется для получения числового ASCII кода заданного символа. В качестве параметра можно передать как целую строку (проверка произойдет для первого символа в строке), так и один символ или пробел.

Chr (код символа) – работает в обратном порядке по сравнению с предыдущей функцией. В качестве параметра мы передаем ASCII код, а на выходе получаем символ по заданному коду. Данная строковая VBA функция актуальна в тех случаях, когда нужно вывести служебный символ, например, кавычки, хотя чаще, используются именованные VBA константы.

InStr (строка1, строка2, [старт]) – предназначена для поиска последовательности знаков (строка2) в заданной строке (строка1). Можно также задать начальную позицию для поиска вхождения (необязательный параметр “старт”).

InStrRev (строка1, строка2, [старт]) – аналог предыдущей функции, но поиск происходит в обратном порядке.

Left (строка, длина) – позволяет вернуть заданное количество знаков (параметр “длина”) для выбранной строки (параметр “ строка ”), начиная слева.

Right (строка, длина) – позволяет вернуть заданное количество знаков для выбранной строки, начиная справа.

Mid (строка, длина, старт) – позволяет вернуть заданное количество знаков (параметр “длина”) для выбранной строки, начиная с заданной позиции (параметр “старт”).

Len (строка) – определяет численное количество символов в строке.

LCase (строка) – предназначена для преобразования всех символов в переданной строке в нижний регистр.

UCase (строка) – предназначена для преобразования всех символов в переданной строке в верхний регистр.

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

RSet (строка, длина) – логика работы та же, что и для предыдущей vba функции работы со строками, но процесс происходит справа.

LTrim (строка) – удалить пробелы слева в строке

RTrim (строка) – удалить пробелы справа в строке

Trim (строка) – удалить пробелы справа и слева в строке

Replace () – замена в строке одних символов на другие

Space (количество_пробелов) – формирование строки из заданного количества пробелов

String (количество, символ) – формирование строки из заданного количества прописанных символов

Spc () – применяется для формирования вывода данных в консольном окне командной строки. Происходит размножение пробелов, учитывая ширину командной строки.

StrComp (строка1, строка2) – сравнение двух строк, вернет 0 при равенстве, и -1 в противном случае.

StrConv (строка, метод, [LCID]) – данная функция vba является универсальной, так как позволяет преобразовать заданную строку в различные вариации (верхний и нижний регистр, кодировка, перевод байт).

  • Строка – собственно, строковое значение, над которым нужно провести преобразование.
  • Метод – задает метод преобразования, данный параметр может принимать следующие значения:
  1. vbUpperCase – перевод в верхний регистр, значение 1
  2. vbLowerCase – перевод в нижний регистр, значение 2
  3. vbPropperCase – перевод первых символов всех слов в верхний регистр, а остальные символы – в нижний, значение 3.
  4. vbWide – применяется для кодировки восточных языков. Перевод символов в один байт с двухбайтовых. Значение 4.
  5. vbNarrow – аналог предыдущему параметру, но тут происходит перевод двух байт в один, значение 8.
  6. vbKatakana – происходит преобразование символов алфавита Хирагана в символы для алфавита Катана, применим для японского языка, значение 16.
  7. vbHiragana – аналог предыдущего параметра, но тут происходит преобразования вида Катана в Хирагана, значение 32. VBA строковые функции
  8. vbUnicode – перевод заданной строки в Unicode кодировку, значение 64.
  9. vbFormatUnicode – перевод из кодировки Unicode в стандартную, значение 128.
  • LCID – параметр не является обязательным, (vba строковые функции) он задает идентификатор региональных настроек. По умолчанию значение LocaleId, то есть, то значение, что установлено в панели управления.

StrReverse (строка) – инвертировать расположение знаков в строке, проще говоря, “отзеркаливает”.

Tab () – позволяет размножить символы табуляции в заданном количестве. Помимо этого, для вставки табуляции применяется именованная константа vbTab.

Аналогичные VBA строковые функции используются и в языке VBScript сервера сценариев Windows Script Host.

Спасибо за внимание. Автор блога Владимир Баталий

Функции VBA для работы с текстом

  • 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)

    Dim sStr As String sStr = «Hello, World!» MsgBox Replace(sStr, «Hello», «Bay»)

    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().
  • Quick Guide to String Functions

    String operations Function(s)
    Append two or more strings Format or «&»
    Build a string from an array Join
    Compare — normal StrComp or «=»
    Compare — pattern Like
    Convert to a string CStr, Str
    Convert string to date Simple: CDate
    Advanced: Format
    Convert string to number Simple: CLng, CInt, CDbl, Val
    Advanced: Format
    Convert to unicode, wide, narrow StrConv
    Convert to upper/lower case StrConv, UCase, LCase
    Extract part of a string Left, Right, Mid
    Format a string Format
    Find characters in a string InStr, InStrRev
    Generate a string String
    Get length of a string Len
    Remove blanks LTrim, RTrim, Trim
    Replace part of a string Replace
    Reverse a string StrReverse
    Parse string to array Split

    The Webinar

    If you are a member of the website, click on the image below to view the webinar for this post.

    (Note: Website members have access to the full webinar archive.)

    vba strings video

    Introduction

    Using strings is a very important part of VBA. There are many types of manipulation you may wish to do with strings. These include tasks such as

    • extracting part of a string
    • comparing strings
    • converting numbers to a string
    • formatting a date to include weekday
    • finding a character in a string
    • removing blanks
    • parsing to an array
    • and so on

    The good news is that VBA contains plenty of functions to help you perform these tasks with ease.

    This post provides an in-depth guide to using string in VBA. It explains strings in simple terms with clear code examples. I have laid it out so the post can be easily used as a quick reference guide.

    If you are going to use strings a lot then I recommend you read the first section as it applies to a lot of the functions. Otherwise you can read in order or just go to the section you require.

    Read This First!

    The following two points are very important when dealing with VBA string functions.

    The Original String is not Changed

    An important point to remember is that the VBA string functions do not change the original string. They return a new string with the changes the function made. If you want to change the original string you simply assign the result to the original string. See the section Extracting Part of a String for examples of this.

    How To Use Compare

    Some of the string functions such as StrComp() and Instr() etc. have an optional Compare parameter. This works as follows:

    vbTextCompare: Upper and lower case are considered the same

    vbBinaryCompare: Upper and lower case are considered different

    The following code uses the string comparison function StrComp() to demonstrate the Compare parameter

    ' https://excelmacromastery.com/
    Sub Comp1()
    
        ' Prints 0  : Strings match
        Debug.Print StrComp("ABC", "abc", vbTextCompare)
        ' Prints -1 : Strings do not match
        Debug.Print StrComp("ABC", "abc", vbBinaryCompare)
    
    End Sub
    

    You can use the Option Compare setting instead of having to use this parameter each time. Option Compare is set at the top of a Module. Any function that uses the Compare parameter will take this setting as the default. The two ways to use Option Compare are:

    1. Option Compare Text: makes vbTextCompare the default Compare argument

    ' https://excelmacromastery.com/
    Option Compare Text
    
    Sub Comp2()
        ' Strings match - uses vbCompareText as Compare argument
        Debug.Print StrComp("ABC", "abc")
        Debug.Print StrComp("DEF", "def")
    End Sub
    

    2. Option Compare Binary: Makes vbBinaryCompare the default Compare argument

    ' https://excelmacromastery.com/
    Option Compare Binary
    
    Sub Comp2()
        ' Strings do not match - uses vbCompareBinary as Compare argument
        Debug.Print StrComp("ABC", "abc")
        Debug.Print StrComp("DEF", "def")
    End Sub
    

    If Option Compare is not used then the default is Option Compare Binary.

    Now that you understand these two important points about string we can go ahead and look at the string functions individually.

    Go back to menu

    Appending Strings

    VBA String Functions - Smaller

    ABC Cube Pile © Aleksandr Atkishkin | Dreamstime.com

    You can append strings using the & operator. The following code shows some examples of using it

    ' https://excelmacromastery.com/
    Sub Append()
    
        Debug.Print "ABC" & "DEF"
        Debug.Print "Jane" & " " & "Smith"
        Debug.Print "Long " & 22
        Debug.Print "Double " & 14.99
        Debug.Print "Date " & #12/12/2015#
    
    End Sub
    

    You can see in the example that different types such as dates and number are automatically converted to strings. You may see the + operator being used to append strings. The difference is that this operator will only work with string types. If you try to use it with other type you will get an error.

        ' This will give the error message:  "Type Mismatch"
        Debug.Print "Long " + 22
    

    If you want to do more complex appending of strings then you may wish to use the Format function described below.

    Go back to menu

    Extracting Part of a String

    The functions discussed in this section are useful when dealing with basic extracting from a string. For anything more complicated you might want to check out my post on How to Easily Extract From Any String Without Using VBA InStr.

    Function Parameters Description Example
    Left string, length Return chars from left side Left(«John Smith»,4)
    Right string, length Return chars from right side Right(«John Smith»,5)
    Mid string, start, length Return chars from middle Mid(«John Smith»,3,2)

    The Left, Right, and Mid functions are used to extract parts of a string. They are very simple functions to use. Left reads characters from the left, Right from the right and Mid from a starting point that you specify.

    ' https://excelmacromastery.com/
    Sub UseLeftRightMid()
    
        Dim sCustomer As String
        sCustomer = "John Thomas Smith"
    
        Debug.Print Left(sCustomer, 4)  '  Prints: John
        Debug.Print Right(sCustomer, 5) '  Prints: Smith
    
        Debug.Print Left(sCustomer, 11)  '  Prints: John Thomas
        Debug.Print Right(sCustomer, 12)  '  Prints: Thomas Smith
    
        Debug.Print Mid(sCustomer, 1, 4) ' Prints: John
        Debug.Print Mid(sCustomer, 6, 6) ' Prints: Thomas
        Debug.Print Mid(sCustomer, 13, 5) ' Prints: Smith
    
    End Sub
    

    As mentioned in the previous section, VBA string functions do not change the original string. Instead, they return the result as a new string.

    In the next example you can see that the string Fullname was not changed after using the Left function

    ' https://excelmacromastery.com/
    Sub UsingLeftExample()
    
        Dim Fullname As String
        Fullname = "John Smith"
    
        Debug.Print "Firstname is: "; Left(Fullname, 4)
        ' Original string has not changed
        Debug.Print "Fullname is: "; Fullname
    
     End Sub
    

    If you want to change the original string you simply assign it to the return value of the function

    ' https://excelmacromastery.com/
    Sub ChangingString()
    
        Dim name As String
        name = "John Smith"
    
        ' Assign return string to the name variable
        name = Left(name, 4)
    
        Debug.Print "Name is: "; name
    
     End Sub
    

    Go back to menu

    Searching Within a String

    Function Params Description Example
    InStr String1, String2 Finds position of string InStr(«John Smith»,»h»)
    InStrRev StringCheck, StringMatch Finds position of string from end InStrRev(«John Smith»,»h»)

    InStr and InStrRev are VBA functions used to search through strings for a substring. If the search string is found then the position(from the start of the check string) of the search string is returned. If the search string is not found then zero is returned. If either string is null then null is returned.

    InStr Description of Parameters

    InStr() Start[Optional], String1, String2, Compare[Optional]

    • Start As Long[Optional – Default is 1]: This is a number that specifies the starting search position from the left
    • String1 As String: The string to search
    • String2 As String: The string to search for
    • Compare As vbCompareMethod : See the section on Compare above for more details

    InStr Use and Examples

    InStr returns the first position in a string where a given substring is found. The following shows some examples of using it

    ' https://excelmacromastery.com/
    Sub FindSubString()
    
        Dim name As String
        name = "John Smith"
    
        ' Returns 3 - position of first h
        Debug.Print InStr(name, "h")
        ' Returns 10 - position of first h starting from position 4
        Debug.Print InStr(4, name, "h")
        ' Returns 8
        Debug.Print InStr(name, "it")
        ' Returns 6
        Debug.Print InStr(name, "Smith")
        ' Returns 0 - string "SSS" not found
        Debug.Print InStr(name, "SSS")
    
    End Sub
    

    InStrRev Description of Parameters

    InStrRev() StringCheck, StringMatch, Start[Optional], Compare[Optional]

    • StringCheck As String: The string to search
    • StringMatch: The string to search for
    • Start As Long[Optional – Default is -1]: This is a number that specifies the starting search position from the right
    • Compare As vbCompareMethod: See the section on Compare above for more details

    InStrRev Use and Examples

    The InStrRev function is the same as InStr except that it searches from the end of the string. It’s important to note that the position returned is the position from the start. Therefore if there is only one instance of the search item then both InStr() and InStrRev() will return the same value.

    The following code show some examples of using InStrRev

    ' https://excelmacromastery.com/
    Sub UsingInstrRev()
    
        Dim name As String
        name = "John Smith"
    
        ' Both Return 1 - position of the only J
        Debug.Print InStr(name, "J")
        Debug.Print InStrRev(name, "J")
    
        ' Returns 10 - second h
        Debug.Print InStrRev(name, "h")
        ' Returns 3 - first h as searches from position 9
        Debug.Print InStrRev(name, "h", 9)
    
        ' Returns 1
        Debug.Print InStrRev(name, "John")
    
    End Sub
    

    The InStr and InStrRev functions are useful when dealing with basic string searches. However, if you are going to use them for extracting text from a string they can make things complicated. I have written about a much better way to do this in my post How to Easily Extract From Any String Without Using VBA InStr.

    Go back to menu

    Removing Blanks

    Function Params Description Example
    LTrim string Removes spaces from left LTrim(» John «)
    RTrim string Removes spaces from right RTrim(» John «)
    Trim string Removes Spaces from left and right Trim(» John «)

    The Trim functions are simple functions that remove spaces from either the start or end of a string.

    Trim Functions Use and Examples

    • LTrim removes spaces from the left of a string
    • RTrim removes spaces from the right of a string
    • Trim removes spaces from the left and right of a string
    ' https://excelmacromastery.com/
    Sub TrimStr()
    
        Dim name As String
        name = "  John Smith  "
    
        ' Prints "John Smith  "
        Debug.Print LTrim(name)
        ' Prints "  John Smith"
        Debug.Print RTrim(name)
        ' Prints "John Smith"
        Debug.Print Trim(name)
    
    End Sub
    

    Go back to menu

    Length of a String

    Function Params Description Example
    Len string Returns length of string Len («John Smith»)

    Len is a simple function when used with a string. It simply returns the number of characters the string contains. If used with a numeric type such as long it will return the number of bytes.

    ' https://excelmacromastery.com/
    Sub GetLen()
    
        Dim name As String
        name = "John Smith"
    
        ' Prints 10
        Debug.Print Len("John Smith")
        ' Prints 3
        Debug.Print Len("ABC")
    
        ' Prints 4 as Long is 4 bytes in size
        Dim total As Long
        Debug.Print Len(total)
    
    End Sub
    

    Go back to menu

    Reversing a String

    Function Params Description Example
    StrReverse string Reverses a string StrReverse («John Smith»)

    StrReverse is another easy-to-use function. It simply returns the given string with the characters reversed.

    ' https://excelmacromastery.com/
    Sub RevStr()
    
        Dim s As String
        s = "Jane Smith"
        ' Prints: htimS enaJ
        Debug.Print StrReverse(s)
    
    End Sub
    

    Go back to menu

    Comparing Strings

    Function Params Description Example
    StrComp string1, string2 Compares 2 strings StrComp («John», «John»)

    The function StrComp is used to compare two strings. The following subsections describe how it is used.

    Description of Parameters

    StrComp()  String1, String2, Compare[Optional]

    • String1 As String: The first string to compare
    • String2 As String: The second string to compare
    • Compare As vbCompareMethod : See the section on Compare above for more details

    StrComp Return Values

    Return Value Description
    0 Strings match
    -1 string1 less than string2
    1 string1 greater than string2
    Null if either string is null

    Use and Examples

    The following are some examples of using the StrComp function

    ' https://excelmacromastery.com/
    Sub UsingStrComp()
    
       ' Returns 0
       Debug.Print StrComp("ABC", "ABC", vbTextCompare)
       ' Returns 1
       Debug.Print StrComp("ABCD", "ABC", vbTextCompare)
       ' Returns -1
       Debug.Print StrComp("ABC", "ABCD", vbTextCompare)
       ' Returns Null
       Debug.Print StrComp(Null, "ABCD", vbTextCompare)
    
    End Sub
    

    Compare Strings using Operators

    You can also use the equals sign to compare strings. The difference between the equals comparison and the StrComp function are:

    1. The equals sign returns only true or false.
    2. You cannot specify a Compare parameter using the equal sign – it uses the “Option Compare” setting.

    The following shows some examples of using equals to compare strings

    ' https://excelmacromastery.com/
    Option Compare Text
    
    Sub CompareUsingEquals()
    
        ' Returns true
        Debug.Print "ABC" = "ABC"
        ' Returns true because "Compare Text" is set above
        Debug.Print "ABC" = "abc"
        ' Returns false
        Debug.Print "ABCD" = "ABC"
        ' Returns false
        Debug.Print "ABC" = "ABCD"
        ' Returns null
        Debug.Print Null = "ABCD"
    
    End Sub
    

    The Operator “<>” means “does not equal”. It is essentially the opposite of using the equals sign as the following code shows

    ' https://excelmacromastery.com/
    Option Compare Text
    
    Sub CompareWithNotEqual()
    
        ' Returns false
        Debug.Print "ABC" <> "ABC"
        ' Returns false because "Compare Text" is set above
        Debug.Print "ABC" <> "abc"
        ' Returns true
        Debug.Print "ABCD" <> "ABC"
        ' Returns true
        Debug.Print "ABC" <> "ABCD"
        ' Returns null
        Debug.Print Null <> "ABCD"
    
    End Sub
    

    Go back to menu

    Comparing Strings using Pattern Matching

    Operator Params Description Example
    Like string, string pattern checks if string has the given pattern «abX» Like «??X»
    «54abc5» Like «*abc#»
    Token Meaning
    ? Any single char
    # Any single digit(0-9)
    * zero or more characters
    [charlist] Any char in the list
    [!charlist] Any char not in the char list

    Pattern matching is used to determine if a string has a particular pattern of characters. For example, you may want to check that a customer number has 3 digits followed by 3 alphabetic characters or a string has the letters XX followed by any number of characters.

    If the string matches the pattern then the return value is true, otherwise it is false.

    Pattern matching is similar to the VBA Format function in that there are almost infinite ways to use it. In this section I am going to give some examples that will explain how it works. This should cover the most common uses. If you need more information about pattern matching you can refer to the MSDN Page for the Like operator.

    Lets have a look at a basic example using the tokens. Take the following pattern string

    [abc][!def]?#X*

    Let’s look at how this string works
    [abc] a character that is either a,b or c
    [!def] a character that is not d,e or f
    ? any character
    # any digit
    X the character X
    * followed by zero or more characters

    Therefore the following string is valid
    apY6X

    a is one of abc
    p is not one of the characters d, e or f
    Y is any character
    6 is a digit
    X is the letter X

    The following code examples show the results of various strings with this pattern

    ' https://excelmacromastery.com/
    Sub Patterns()
    
        ' True
        Debug.Print 1; "apY6X" Like "[abc][!def]?#X*"
        ' True - any combination of chars after x is valid
        Debug.Print 2; "apY6Xsf34FAD" Like "[abc][!def]?#X*"
        ' False - char d not in [abc]
        Debug.Print 3; "dpY6X" Like "[abc][!def]?#X*"
        ' False - 2nd char e is in [def]
        Debug.Print 4; "aeY6X" Like "[abc][!def]?#X*"
        ' False - A at position 4 is not a digit
        Debug.Print 5; "apYAX" Like "[abc][!def]?#X*"
        ' False - char at position 5 must be X
        Debug.Print 6; "apY6Z" Like "[abc][!def]?#X*"
    
    End Sub
    

    Real-World Example of Pattern Matching

    To see a real-world example of using pattern matching check out Example 3: Check if a filename is valid.

    Important Note on VBA Pattern Matching

    The Like operator uses either Binary or Text comparison based on the Option Compare setting. Please see the section on Compare above for more details.

    Go back to menu

    Replace Part of a String

    Function Params Description Example
    Replace string, find, replace,
    start, count, compare
    Replaces a substring with a substring Replace («Jon»,»n»,»hn»)

    Replace is used to replace a substring in a string by another substring. It replaces all instances of the substring that are found by default.

    Replace Description of Parameters

    Replace()  Expression, Find, Replace, Start[Optional], Count[Optional], Compare[Optional]

    • Expression As String: The string to replace chars in
    • Find As String: The substring to replace in the Expression string
    • Replace As String: The string to replace the Find substring with
    • Start As Long[Optional – Default is 1]: The start position in the string
    • Count As Long[Optional – Default is -1]: The number of substitutions to make. The default -1 means all.
    • Compare As vbCompareMethod : See the section on Compare above for more details

    Use and Examples

    The following code shows some examples of using the Replace function

    ' https://excelmacromastery.com/
    Sub ReplaceExamples()
    
        ' Replaces all the question marks with(?) with semi colons(;)
        Debug.Print Replace("A?B?C?D?E", "?", ";")
        ' Replace Smith with Jones
        Debug.Print Replace("Peter Smith,Ann Smith", "Smith", "Jones")
        ' Replace AX with AB
        Debug.Print Replace("ACD AXC BAX", "AX", "AB")
    
    End Sub
    

    Output
    A;B;C;D;E
    Peter Jones,Sophia Jones
    ACD ABC BAB

    In the following examples we use the Count optional parameter. Count determines the number of substitutions to make. So for example, setting Count equal to one means that only the first occurrence will be replaced.

    ' https://excelmacromastery.com/
    Sub ReplaceCount()
    
        ' Replaces first question mark only
        Debug.Print Replace("A?B?C?D?E", "?", ";", Count:=1)
        ' Replaces first three question marks
        Debug.Print Replace("A?B?C?D?E", "?", ";", Count:=3)
    
    End Sub
    

    Output
    A;B?C?D?E
    A;B;C;D?E

    The Start optional parameter allow you to return part of a string. The position you specify using Start is where it starts returning the string from. It will not return any part of the string before this position whether a replace was made or not.

    ' https://excelmacromastery.com/
    Sub ReplacePartial()
    
        ' Use original string from position 4
        Debug.Print Replace("A?B?C?D?E", "?", ";", Start:=4)
        ' Use original string from position 8
        Debug.Print Replace("AA?B?C?D?E", "?", ";", Start:=8)
        ' No item replaced but still only returns last 2 characters
        Debug.Print Replace("ABCD", "X", "Y", Start:=3)
    
    End Sub
    

    Output
    ;C;D;E
    ;E
    CD

    Sometimes you may only want to replace only upper or lower case letters. You can use the Compare parameter to do this. This is used in a lot of string functions.  For more information on this check out the Compare section above.

    ' https://excelmacromastery.com/
    Sub ReplaceCase()
    
        ' Replace capital A's only
        Debug.Print Replace("AaAa", "A", "X", Compare:=vbBinaryCompare)
        ' Replace All A's
        Debug.Print Replace("AaAa", "A", "X", Compare:=vbTextCompare)
    
    End Sub
    

    Output
    XaXa
    XXXX

    Multiple Replaces

    If you want to replace multiple values in a string you can nest the calls. In the following code we want to replace X and Y with A and B respectively.

    ' https://excelmacromastery.com/
    Sub ReplaceMulti()
    
        Dim newString As String
    
        ' Replace A with X
        newString = Replace("ABCD ABDN", "A", "X")
        ' Now replace B with Y in new string
        newString = Replace(newString, "B", "Y")
    
        Debug.Print newString
    
    End Sub
    

    In the next example we will change the above code to perform the same task. We will use the return value of the first replace as the argument for the second replace.

    ' https://excelmacromastery.com/
    Sub ReplaceMultiNested()
    
        Dim newString As String
    
        ' Replace A with X and B with Y
        newString = Replace(Replace("ABCD ABDN", "A", "X"), "B", "Y")
    
        Debug.Print newString
    
    End Sub
    

    The result of both of these Subs is
    XYCD XYDN

    Go back to menu

    Convert Types to String(Basic)

    This section is about converting numbers to a string. A very important point here is that most the time VBA will automatically convert to a string for you. Let’s look at some examples

    ' https://excelmacromastery.com/
    Sub AutoConverts()
    
        Dim s As String
        ' Automatically converts number to string
        s = 12.99
        Debug.Print s
    
        ' Automatically converts multiple numbers to string
        s = "ABC" & 6 & 12.99
        Debug.Print s
    
        ' Automatically converts double variable to string
        Dim d As Double, l As Long
        d = 19.99
        l = 55
        s = "Values are " & d & " " & l
        Debug.Print s
    
    End Sub
    

    When you run the above code you can see that the number were automatically converted to strings. So when you assign a value to a string VBA will look after the conversion for you most of the time. There are conversion functions in VBA and in the following sub sections we will look at the reasons for using them.

    Explicit Conversion

    Function Params Description Example
    CStr expression Converts a number variable to a string CStr («45.78»)
    Str number Converts a number variable to a string Str («45.78»)

    In certain cases you may want to convert an item to a string without have to place it in a string variable first. In this case you can use the Str or CStr functions. Both take an  expression as a function and this can be any type such as long, double, data or boolean.

    Let’s look at a simple example. Imagine you are reading a list of values from different types of cells to a collection. You can use the Str/CStr functions to ensure they are all stored as strings. The following code shows an example of this

    ' https://excelmacromastery.com/
    Sub UseStr()
    
        Dim coll As New Collection
        Dim c As Range
    
        ' Read cell values to collection
        For Each c In Range("A1:A10")
            ' Use Str to convert cell value to a string
            coll.Add Str(c)
        Next
    
        ' Print out the collection values and type
        Dim i As Variant
        For Each i In coll
            Debug.Print i, TypeName(i)
        Next
    
    End Sub
    

    In the above example we use Str to convert the value of the cell to a string. The alternative to this would be to assign the value to a string and then assigning the string to the collection. So you can see that using Str here is much more efficient.

    Multi Region

    The difference between the Str and CStr functions is that CStr converts based on the region. If your macros will be used in multiple regions then you will need to use CStr for your string conversions.

    It is good to practise to use CStr when reading values from cells. If your code ends up being used in another region then you will not have to make any changes to make it work correctly.

    Go back to menu

    Convert String to Number- CLng, CDbl, Val etc.

    Function Returns Example
    CBool Boolean CBool(«True»), CBool(«0»)
    CCur Currency CCur(«245.567»)
    CDate Date CDate(«1/1/2017»)
    CDbl Double CCur(«245.567»)
    CDec Decimal CDec(«245.567»)
    CInt Integer CInt(«45»)
    CLng Long Integer CLng(«45.78»)
    CVar Variant CVar(«»)

    The above functions are used to convert strings to various types. If you are assigning to a variable of this type then VBA will do the conversion automatically.

    ' https://excelmacromastery.com/
    Sub StrToNumeric()
    
        Dim l As Long, d As Double, c As Currency
        Dim s As String
        s = "45.923239"
    
        l = s
        d = s
        c = s
    
        Debug.Print "Long is "; l
        Debug.Print "Double is "; d
        Debug.Print "Currency is "; c
    
    End Sub
    

    Using the conversion types gives more flexibility. It means you can determine the type at runtime. In the following code we set the type based on the sType argument passed to the PrintValue function. As this type can be read from an external source such as a cell, we can set the type at runtime. If we declare a variable as Long then it will always be long when the code runs.

    ' https://excelmacromastery.com/
    Sub Test()
        ' Prints  46
        PrintValue "45.56", "Long"
        ' Print 45.56
        PrintValue "45.56", ""
    End Sub
    
    Sub PrintValue(ByVal s As String, ByVal sType As String)
    
        Dim value
    
        ' Set the data type based on a type string
        If sType = "Long" Then
            value = CLng(s)
        Else
            value = CDbl(s)
        End If
        Debug.Print "Type is "; TypeName(value); value
    
    End Sub
    

    If a string is not a valid number(i.e. contains symbols other numeric) then you get a “Type Mismatch” error.

    ' https://excelmacromastery.com/
    Sub InvalidNumber()
    
        Dim l As Long
    
        ' Will give type mismatch error
        l = CLng("45A")
    
    End Sub
    

    The Val Function

    The value function convert numeric parts of a string to the correct number type.

    The Val function converts the first numbers it meets. Once it meets letters in a string it stops. If there are only letters then it returns zero as the value. The following code shows some examples of using Val

    ' https://excelmacromastery.com/
    Sub UseVal()
    
        ' Prints 45
        Debug.Print Val("45 New Street")
    
        ' Prints 45
        Debug.Print Val("    45 New Street")
    
        ' Prints 0
        Debug.Print Val("New Street 45")
    
        ' Prints 12
        Debug.Print Val("12 f 34")
    
    End Sub
    

    The Val function has two disadvantages

    1. Not Multi-Region – Val does not recognise international versions of numbers such as using commas instead of decimals. Therefore you should use the above conversion functions when you application will be used in multiple regions.

    2. Converts invalid strings to zero – This may be okay in some instances but in most cases it is better if an invalid string raises an error. The application is then aware there is a problem and can act accordingly. The conversion functions such as CLng will raise an error if the string contains non-numeric characters.

    Go back to menu

    Generate a String of items – String Function

    Function Params Description Example
    String number, character Converts a number variable to a string String (5,»*»)

    The String function is used to generate a string of repeated characters. The first argument is the number of times to repeat it, the second argument is the character.

    ' https://excelmacromastery.com/
    Sub GenString()
    
        ' Prints: AAAAA
        Debug.Print String(5, "A")
        ' Prints: >>>>>
        Debug.Print String(5, 62)
        ' Prints: (((ABC)))
        Debug.Print String(3, "(") & "ABC" & String(3, ")")
    
    End Sub
    

    Go back to menu

    Convert Case/Unicode – StrConv, UCase, LCase

    Function Params Description Example
    StrConv string, conversion, LCID Converts a String StrConv(«abc»,vbUpperCase)

    If you want to convert the case of a string to upper or lower you can use the UCase and LCase functions for upper and lower respectively. You can also use the StrConv function with the vbUpperCase or vbLowerCase argument. The following code shows example of using these three functions

    ' https://excelmacromastery.com/
    Sub ConvCase()
    
        Dim s As String
        s = "Mary had a little lamb"
    
        ' Upper
        Debug.Print UCase(s)
        Debug.Print StrConv(s, vbUpperCase)
    
        ' Lower
        Debug.Print LCase(s)
        Debug.Print StrConv(s, vbLowerCase)
    
        ' Sets the first letter of each word to upper case
        Debug.Print StrConv(s, vbProperCase)
    
    End Sub
    

    Output
    MARY HAD A LITTLE LAMB
    MARY HAD A LITTLE LAMB
    mary had a little lamb
    mary had a little lamb
    Mary Had A Little Lamb

    Other Conversions

    As well as case the StrConv can perform other conversions based on the Conversion parameter. The following table shows a list of the different parameter values and what they do. For more information on StrConv check out the MSDN Page.

    Constant Value Converts
    vbUpperCase 1 to upper case
    vbLowerCase 2 to lower case
    vbProperCase 3 first letter of each word to uppercase
    vbWide* 4 from Narrow to Wide
    vbNarrow* 8 from Wide to Narrow
    vbKatakana** 16 from Hiragana to Katakana
    vbHiragana 32 from Katakana to Hiragana
    vbUnicode 64 to unicode
    vbFromUnicode 128 from unicode

    Go back to menu

    Using Strings With Arrays

    Function Params Description Example
    Split expression, delimiter,
    limit, compare
    Parses a delimited string to an array arr = Split(«A;B;C»,»;»)
    Join source array, delimiter Converts a one dimensional array to a string s = Join(Arr, «;»)

    String to Array using Split

    You can easily parse a delimited string into an array. You simply use the Split function with the delimiter as parameter. The following code shows an example of using the Split function.

    ' https://excelmacromastery.com/
    Sub StrToArr()
    
        Dim arr() As String
        ' Parse string to array
        arr = Split("John,Jane,Paul,Sophie", ",")
    
        Dim name As Variant
        For Each name In arr
            Debug.Print name
        Next
    
    End Sub
    

    Output
    John
    Jane
    Paul
    Sophie

    You can find a complete guide to the split function here.

    Array to String using Join

    If you want to build a string from an array you can do so easily using the Join function. This is essentially a reverse of the Split function. The following code provides an example of using Join

    ' https://excelmacromastery.com/
    Sub ArrToStr()
    
        Dim Arr(0 To 3) As String
        Arr(0) = "John"
        Arr(1) = "Jane"
        Arr(2) = "Paul"
        Arr(3) = "Sophie"
    
        ' Build string from array
        Dim sNames As String
        sNames = Join(Arr, ",")
    
        Debug.Print sNames
    
    End Sub
    

    Output
    John,Jane,Paul,Sophie

    Go back to menu

    Formatting a String

    Function Params Description Example
    Format expression, format,
    firstdayofweek, firstweekofyear
    Formats a string Format(0.5, «0.00%»)

    The Format function is used to format a string based on given instructions. It is mostly used to place a date or number in certain format. The examples below show the most common ways you would format a date.

    ' https://excelmacromastery.com/
    Sub FormatDate()
    
        Dim s As String
        s = "31/12/2015 10:15:45"
    
        ' Prints: 31 12 15
        Debug.Print Format(s, "DD MM YY")
        ' Prints: Thu 31 Dec 2015
        Debug.Print Format(s, "DDD DD MMM YYYY")
        ' Prints: Thursday 31 December 2015
        Debug.Print Format(s, "DDDD DD MMMM YYYY")
        ' Prints: 10:15
        Debug.Print Format(s, "HH:MM")
        ' Prints: 10:15:45 AM
        Debug.Print Format(s, "HH:MM:SS AM/PM")
    
    End Sub
    

    The following examples are some common ways of formatting numbers

    ' https://excelmacromastery.com/
    Sub FormatNumbers()
    
        ' Prints: 50.00%
        Debug.Print Format(0.5, "0.00%")
        ' Prints: 023.45
        Debug.Print Format(23.45, "00#.00")
        ' Prints: 23,000
        Debug.Print Format(23000, "##,000")
        ' Prints: 023,000
        Debug.Print Format(23000, "0##,000")
        ' Prints: $23.99
        Debug.Print Format(23.99, "$#0.00")
    
    End Sub
    

    The Format function is quite a large topic and could use up a full post on it’s own. If you want more information then the MSDN Format Page provides a lot of information.

    Helpful Tip for Using Format

    A quick way to figure out the formatting to use is by using the cell formatting on an Excel worksheet. For example add a number to a cell. Then right click and format the cell the way you require. When you are happy with the format select Custom from the category listbox on the left.  When you select this you can see the format string in the type textbox(see image below). This is the string format you can use in VBA.

    VBA Format Function

    Format Cells Dialog

    Go back to menu

    Conclusion

    In almost any type of programming, you will spend a great deal of time manipulating strings. This post covers the many different ways you use strings in VBA.

    To get the most from use the table at the top to find the type of function you wish to use. Clicking on the left column of this function will bring you to that section.

    If you are new to strings in VBA, then I suggest you check out the Read this First section before using any of the functions.

    What’s Next?

    Free VBA Tutorial If you are new to VBA or you want to sharpen your existing VBA skills then why not try out the The Ultimate VBA Tutorial.

    Related Training: Get full access to the Excel VBA training webinars and all the tutorials.

    (NOTE: Planning to build or manage a VBA Application? Learn how to build 10 Excel VBA applications from scratch.)

    Понравилась статья? Поделить с друзьями:
  • Vba word текст закладки
  • Vba word текст в ячейке таблицы
  • Vba word таблица цвет ячейки
  • Vba word таблица в таблице
  • Vba word таблица range