Символ начало строки excel vba

Работа с текстом в коде VBA Excel. Функции, оператор & и другие ключевые слова для работы с текстом. Примеры использования некоторых функций и ключевых слов.

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

Основные функции для работы с текстом в VBA Excel:

Функция Описание
Asc(строка) Возвращает числовой код символа, соответствующий первому символу строки. Например: MsgBox Asc(«/Stop»). Ответ: 47, что соответствует символу «/».
Chr(код символа) Возвращает строковый символ по указанному коду. Например: MsgBox Chr(47). Ответ: «/».
Format(Expression, [FormatExpression], [FirstDayOfWeek], [FirstWeekOfYear]) Преобразует число, дату, время в строку (тип данных Variant (String)), отформатированную в соответствии с инструкциями, включенными в выражение формата. Подробнее…
InStr([начало], строка1, строка2, [сравнение]) Возвращает порядковый номер символа, соответствующий первому вхождению одной строки (строка2) в другую (строка1) с начала строки. Подробнее…
InstrRev(строка1, строка2, [начало, [сравнение]]) Возвращает порядковый номер символа, соответствующий первому вхождению одной строки (строка2) в другую (строка1) с конца строки. Подробнее…
Join(SourceArray,[Delimiter]) Возвращает строку, созданную путем объединения нескольких подстрок из массива. Подробнее…
LCase(строка) Преобразует буквенные символы строки в нижний регистр.
Left(строка, длина) Возвращает левую часть строки с заданным количеством символов. Подробнее…
Len(строка) Возвращает число символов, содержащихся в строке.
LTrim(строка) Возвращает строку без начальных пробелов (слева). Подробнее…
Mid(строка, начало, [длина]) Возвращает часть строки с заданным количеством символов, начиная с указанного символа (по номеру). Подробнее…
Replace(expression, find, replace, [start], [count], [compare]) Возвращает строку, полученную в результате замены одной подстроки в исходном строковом выражении другой подстрокой указанное количество раз. Подробнее…
Right(строка, длина) Возвращает правую часть строки с заданным количеством символов. Подробнее…
RTrim(строка) Возвращает строку без конечных пробелов (справа). Подробнее…
Space(число) Возвращает строку, состоящую из указанного числа пробелов. Подробнее…
Split(Expression,[Delimiter],[Limit],[Compare]) Возвращает одномерный массив подстрок, извлеченных из указанной строки с разделителями. Подробнее…
StrComp(строка1, строка2, [сравнение]) Возвращает числовое значение Variant (Integer), показывающее результат сравнения двух строк. Подробнее…
StrConv(string, conversion) Изменяет регистр символов исходной строки в соответствии с заданным параметром «conversion». Подробнее…
String(число, символ) Возвращает строку, состоящую из указанного числа символов. В выражении «символ» может быть указан кодом символа или строкой, первый символ которой будет использован в качестве параметра «символ». Подробнее…
StrReverse(строка) Возвращает строку с обратным порядком следования знаков по сравнению с исходной строкой. Подробнее…
Trim(строка) Возвращает строку без начальных (слева) и конечных (справа) пробелов. Подробнее…
UCase(строка) Преобразует буквенные символы строки в верхний регистр.
Val(строка) Возвращает символы, распознанные как цифры с начала строки и до первого нецифрового символа, в виде числового значения соответствующего типа. Подробнее…
WorksheetFunction.Trim(строка) Функция рабочего листа, которая удаляет все лишние пробелы (начальные, конечные и внутренние), оставляя внутри строки одиночные пробелы.

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

Ключевые слова для работы с текстом

Ключевое слово Описание
& Оператор & объединяет два выражения (результат = выражение1 & выражение2). Если выражение не является строкой, оно преобразуется в Variant (String), и результат возвращает значение Variant (String). Если оба выражения возвращают строку, результат возвращает значение String.
vbCrLf Константа vbCrLf сочетает в себе возврат каретки и перевод строки (Chr(13) + Chr(10)) и переносит последующий текст на новую строку (результат = строка1 & vbCrLf & строка2).
vbNewLine Константа vbNewLine в VBA Excel аналогична константе vbCrLf, также сочетает в себе возврат каретки и перевод строки (Chr(13) + Chr(10)) и переносит текст на новую строку (результат = строка1 & vbNewLine & строка2).

Примеры

Вывод прямых парных кавычек

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

Sub Primer1()

    ‘Вывод одной прямой парной кавычки

MsgBox Chr(34)

    ‘Отображение текста в прямых кавычках

MsgBox Chr(34) & «Волга» & Chr(34)

    ‘Вывод 10 прямых парных кавычек подряд

MsgBox String(10, Chr(34))

End Sub

Смотрите интересное решение по выводу прямых кавычек с помощью прямых кавычек в первом комментарии.

Отображение слов наоборот

Преобразование слова «налим» в «Милан»:

Sub Primer2()

Dim stroka

    stroka = «налим»

    stroka = StrReverse(stroka) ‘милан

    stroka = StrConv(stroka, 3) ‘Милан

MsgBox stroka

End Sub

или одной строкой:

Sub Primer3()

MsgBox StrConv(StrReverse(«налим»), 3)

End Sub

Преобразование слова «лето» в «отель»:

Sub Primer4()

Dim stroka

    stroka = «лето»

    stroka = StrReverse(stroka) ‘отел

    stroka = stroka & «ь» ‘отель

MsgBox stroka

End Sub

или одной строкой:

Sub Primer5()

MsgBox StrReverse(«лето») & «ь»

End Sub

Печатная машинка

Следующий код VBA Excel в замедленном режиме посимвольно печатает указанную строку на пользовательской форме, имитируя печатную машинку.

Для реализации этого примера понадобится пользовательская форма (UserForm1) с надписью (Label1) и кнопкой (CommandButton1):

Пользовательская форма с элементами управления Label и CommandButton

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

Sub StopSub(Pause As Single)

Dim Start As Single

Start = Timer

    Do While Timer < Start + Pause

       DoEvents

    Loop

End Sub

Private Sub CommandButton1_Click()

Dim stroka As String, i As Byte

stroka = «Печатная машинка!»

Label1.Caption = «»

    For i = 1 To Len(stroka)

        Call StopSub(0.25) ‘пауза в секундах

        ‘следующая строка кода добавляет очередную букву

        Label1.Caption = Label1.Caption & Mid(stroka, i, 1)

    Next

End Sub

Обе процедуры размещаются в модуле формы. Нажатие кнопки CommandButton1 запустит замедленную печать символов в поле надписи, имитируя печатную машинку.


 

Здравствуйте, уважаемые форумчане!
Помогите мне, пожалуйста, понять почему макрос не добавляет знак равно первым символам строки?
У меня была готовая формула, Мне нужно оставить её в нетронутом виде и дописать ещё формулу.
Исходную формулу я перевела в текстовый формат, убрала знак равно, далее в текстовом формате прицепила ту формулу, что мне необходимо.
Однако я не могу прирепить знак = в начало строки, макрос выдаёт ошибку.
Я пробовала прикрепить с помощью константы —  не получилось. Я прикрепляла знак равно ставя его в кавычки как текст. Тоже не вышло…

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

Хватит слезы проливать :),  рисуйте пример

 

JayBhagavan

Пользователь

Сообщений: 11833
Регистрация: 17.01.2014

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

suricat555, насколько я понимаю, то Вы, скорее всего, используете «Formula», а надо «FormulaLocal».

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

suricat555

Пользователь

Сообщений: 132
Регистрация: 09.08.2015

#4

11.07.2021 19:48:23

Вот мой образец.
мне надо именно дописать формулу, чтобы она дописанная отражалась в ячейках.
Я специально сейчас сделала чтобы новые формулы записывались в соседний столбец, для наглядности. В последнем столбце в последнем действии я прикрепляю «‘», иначе если без него, макрос выдает ошибку…. Я пробовала прикрепить вместо ‘  любой другой значок, чтобы потом его хитро убрать в помощью левсимв, но моя хитрость не удалась…..

Код
Sub q()

ActiveWindow.DisplayFormulas = True
Dim i As Long

Const w$ = "="

For i = 1 To 6
If Cells(i, 3).HasFormula Then

f = Cells(i, 3).Formula
ost = Len(f) - 1
ff = Mid(f, 2, ost)

Cells(i, 4) = ff

Cells(i, 5) = "'" & w & "ЛЕВСИМВ(" & ff & ";1)"


End If
Next i

'ActiveWindow.DisplayFormulas = false
End Sub

Прикрепленные файлы

  • Пример.xlsm (14.55 КБ)

Изменено: suricat55511.07.2021 20:13:58

 

Mershik

Пользователь

Сообщений: 8277
Регистрация: 03.12.2015

suricat555, а вы уверены что это хороший Вариант ? может стоит весь расчет делать в макросе и показывать результат…какой конечный результат должен быть?

Изменено: Mershik11.07.2021 20:15:19

Не бойтесь совершенства. Вам его не достичь.

 

Mershik, мне нужно получить вот такую запись =ЛЕВСИМВ(A4*B4;1) в ячейках столбца C.
Я хотела потом макрос переделать чтобы без промежуточных столбцов было, это я просто чтобы по шагам видела, нормально у меня получается или нет

 

Mershik

Пользователь

Сообщений: 8277
Регистрация: 03.12.2015

#7

11.07.2021 20:19:00

suricat555,

Цитата
мне нужно получить вот такую запись =ЛЕВСИМВ(A4*B4;1)
Код
Sub q()
Dim i As Long
For i = 1 To 6
    If Cells(i, 3).HasFormula Then
        f = Cells(i, 3).Formula
        ost = Len(f) - 1
        Cells(i, 3).FormulaLocal = "=ЛЕВСИМВ(" & Mid(f, 2, ost) & ";1)"
    End If
Next i
End Sub

Изменено: Mershik11.07.2021 20:19:16

Не бойтесь совершенства. Вам его не достичь.

 

suricat555

Пользователь

Сообщений: 132
Регистрация: 09.08.2015

#8

11.07.2021 20:24:09

Mershik, спасибо большое! Я исправила свой макрос, добавила FormulaLocal

JayBhagavan, вы мне тоже об этом говорили, но я не поняла, куда вставить это надо. Спасибо!
Получилось))) Я целый день мучила этот макрос…. Оказалось, что этот код не нужен в моем случае:

Код
ActiveWindow.DisplayFormulas = True

Изменено: vikttur11.07.2021 21:18:47

 

msi2102

Пользователь

Сообщений: 3137
Регистрация: 31.03.2014

#9

12.07.2021 07:49:59

Можно еще так:

УПС не то, удалять не буду вдруг пригодится

Прикрепленные файлы

  • VB_4_Вычислить.xlsm (8.65 КБ)

Изменено: msi210212.07.2021 07:58:57

Содержание

    • 0.1 удалить из строки знак » и знак =
      • 0.1.1 Вариант1
      • 0.1.2 Вариант
      • 0.1.3 Вариант
      • 0.1.4 Вариант
      • 0.1.5 Вариант
      • 0.1.6 Вариант
      • 0.1.7 В верхний и в нижний регистр
    • 0.2 Операции со строками
    • 0.3 Таблица «Функции работы со строками»
    • 0.4 Следующие три функции позволяют работать с массивом строк
    • 0.5 И последние две функции генерируют строки символов
    • 0.6 Пример
      • 0.6.1 Технология выполнения
    • 0.7 Задача
  • 1 How to: Match a String against a Pattern (Visual Basic)
      • 1.0.1 Проверка символа
      • 1.0.2 ? — один любой символ
      • 1.0.3 Любой символ из списка [abc] и диапазона [a-c]
      • 1.0.4 Символ из списка или отсутствие символа
  • 2 Функция InStr
    • 2.1 Примеры

удалить из строки знак » и знак =

(http://www.cyberforum.ru/vba/thread638743.html)

Вариант1

strW= (="КОРОТЕЕВ ДМИТРИЙ ВЛАДИМИРОВИЧ")
strB=Replace(Replace(strW, Chr(61), ""), Chr(34), "")

Вариант

Можно еще через байтовый массив:

Sub n()
Dim Mass() As Byte, n As Long, Zam As String, TXT As String
TXT = "=""КОРОТЕЕВ ДМИТРИЙ ВЛАДИМИРОВИЧ"
Mass = StrConv(TXT, vbFromUnicode)
For n = 0 To UBound(Mass)
    If Mass(n) <> 34 And Mass(n) <> 61 Then Zam = Zam + Chr$(Mass(n))
Next
MsgBox Zam
End Sub

Вариант

Или фильтрацию мидом:

Sub nn()
Dim n As Long, TXT As String, L As String, Zam As String
TXT = "=""КОРОТЕЕВ ДМИТРИЙ ВЛАДИМИРОВИЧ"
For n = 1 To Len(TXT)
    L = Mid$(TXT, n, 1)
    If L <> """" And L <> "=" Then Zam = Zam + L
Next
MsgBox Zam
End Sub

Строку 6 можно заменить лайкой:
Код Visual Basic
1
If L Like «[!»»=]» Then Zam = Zam + L

Вариант

Еще через поиск позиции и рекурсию:

Sub test()
Dim n As Long, txt As String
txt = "=""КОРОТЕЕВ ДМИТРИЙ ВЛАДИМИРОВИЧ"
txt = Change(txt, "=")
txt = Change(txt, """")
MsgBox txt
End Sub

Function Change(txt As String, What As String, Optional Pos = 1)
Dim n As Long
If Pos <> 0 Then
    n = InStr(Pos, txt, What)
    Change = Mid$(txt, Pos, IIf(n - Pos < 0, Len(txt), n - Pos)) + Change(txt, What, IIf(n = 0, 0, n + 1))
End If
End Function

Еще можно через регулярные выражения, но я их не знаю.

Вариант

Через поиск справа налево и рекурсию:

Код Visual Basic
1
2
3
4
5
6
7
8
Function Change(txt As String, What As String, Optional Pos As Long)
Dim n As Long
If Pos = 0 Then Pos = Len(txt)
If Pos <> -1 Then
    n = InStrRev(txt, What, Pos)
    Change = Change(txt, What, IIf(n = 1, -1, n - 1)) + Mid$(txt, n + 1, Pos - n)
End If
End Function

Вариант

А ещё есть Split и Join

strb = Join(Split(Join(Split(strW, "="), ""), """"), "")

Не по теме:Но это для садистов

В верхний и в нижний регистр

With ActiveDocument.Range
'верхних регистр
    .Text = Ucase(.Text)
'нижний регистр
    .Text = Lcase(.Text)
End With

или StrConv() — преобразовать строку (в Unicode и обратно, в верхний и нижний регистр, сделать первую букву слов заглавной и т.п.) — см. ниже

Операции со строками

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

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

Функция Описание Пример
Len(str) Определяет длину строки Из а=lеn(«Персонажи») следует а=9
Left (<строка>, <длина>) Выделяет из аргумента <строка> указанное количество символов слева Left(» 1234string», 4) =»1234″
Right(<строка>, <длина>) Выделяет из аргумента <строка> указанное количество символов справа Right(» 1234string», 6) =»string»
Mid(<строка>, <старт> [, <длина>]) Выделяет из аргумента <строка> подстроку с указанным числом символов, начиная с позиции <старт> Mid («12345678″, 4.3) =»456»
Mid(<строка>, <старт>) Выделяется подстрока от позиции <старт> до конца строки Mid («12345678″, 4) =»45678»
LTrim (<строка>) Удаляет пробелы в начале строки LTrim(» печать») =»печать»
RTrim (<строка>) Удаляет пробелы в конце строки RTrim(«печать «) =»печать»
Trim (<строка>) Удаляет пробелы в начале и в конце строки Trim(» печать «) =»печать»
InStr([<старт>, ] < строка1>, <строка2> [, <сравнение>]) Производит поиск подстроки в строке. Возвращает позицию первого вхождения строки <строка2> в строку <строка1>, <старт> — позиция, с которой начинается поиск. Если этот аргумент пропущен, поиск начинается с начала строки Instr(«C:Temp test.mdb», «Test»)=9 Если искомая строка не находится в указанной строке, функция возвращает 0
InStrRev ([<старт>, ] <строка1>, <строка2> [, <сравнение>]) Ищет подстроку в строке, но начинает поиск с конца строки и возвращает позицию последнего вхождения подстроки. Необязательный аргумент <сравнение> определяет тип сравнения двух строк
Replace (<строка>, <строкаПоиск>, <строкаЗамена>) Позволяет заменить в строке одну подстроку другой. Эта функция ищет все вхождения аргумента <строкаПоиск> в аргументе <строка> и заменяет их на <строкаЗамена>

Для сравнения строковых значений можно использовать обычные операторы сравнения числовых значений, так как при сравнении символов сравниваются их двоичные коды. Для сравнения строковых значений также применяется оператор Like, который позволяет обнаруживать неточное совпадение, например выражение «Входной сигнал» Like «Вход*» будет иметь значение True, так как сравниваемая строка начинается со слова «Вход». Символ звездочка (*) в строке заменяет произвольное число символов. Другие символы, которые обрабатываются оператором Like в сравниваемой строке:

  • ? – любой символ (один);
  • #– одна цифра (0–9);
  • [<список>] – символ, совпадающий с одним из символов списка;
  • [!<список>] – символ, не совпадающий ни с одним из символов списка.
  • ASC()— эта функция позволяет вернуть числовой код для переданного символа. Например, ASC("D") вернет 68. Эту функцию удобно использовать для того, чтобы определить следующую или предыдущую букву. Обычно она используется вместе с функцией Chr(), которая производит обратную операцию — возвращает символ по переданному его числовому коду.Варианты этой функции — AscB() и AscW():
    • AscB() — возвращает только первый байт числового кода для символа.
    • AscW() — возвращает код для символа в кодировке Unicode
  • Chr() — возвращает символ по его числовому коду. Может использоваться в паре с функцией Asc(), но чаще всего её применяют, когда нужно вывести служебный символ (например кавычки — "), т.к. кавычки просто так в VBA-коде не ввести(нужно ставить двойные). Я обычно именно эту функцию и использую.
        Dim sWord As String
        sWord = Chr(34) & "Слово в кавычках" & Chr(34)

    Есть варианты этой функции — ChrB() и ChrW(). Работают аналогично таким же вариантам для функции Asc().

  • InStr() и InStrRev()— одна из самых популярных функций. Позволяет обнаружить в теле строковой переменной символ или последовательность символов и вернуть их позицию. Если последовательность не обнаружена, то возвращается 0.
        Dim sStr As String
        sStr = "w"
        If InStr(1, "Hello, World!", sStr, vbTextCompare) > 0 Then
            MsgBox "Искомое слово присутсвует!"
        Else
            MsgBox "Искомое слово отсутсвует!"
        End If

    Разница функций в том, что InStr() ищет указанное слово от начала строки, а InStrRev() с конца строки

  • Left()Right()Mid()— возможность взять указанное вами количество символов из существующей строковой переменной слева, справа или из середины соответственно.
        Dim sStr As String
        sStr = "Hello, World!"
        MsgBox Mid(sStr, 1, 5)
  • Len() — возможность получить число символов в строке. Часто используется с циклами, операциями замены и т.п.
  • LCase() и UCase() — перевести строку в нижний и верхний регистры соответственно. Часто используется для подготовки значения к сравнению, когда при сравнении регистр не важен (фамилии, названия фирм, городов и т.п.).
  • LSet() и RSet() — возможность заполнить одну переменную символами другой без изменения ее длины (соответственно слева и справа). Лишние символы обрезаются, на место недостающих подставляются пробелы.
  • LTrim()RTrim()Trim() — возможность убрать пробелы соответственно слева, справа или и слева, и справа.
  • Replace()— возможность заменить в строке одну последовательность символов на другую.
        Dim sStr As String
        sStr = "Hello, World!"
        MsgBox Replace(sStr, "Hello", "Bay")
  • Space() — получить строку из указанного вами количества пробелов;
    Еще одна похожая функция — Spc(), которая используется для форматирования вывода на консоль. Она размножает пробелы с учетом ширины командной строки.
  • StrComp() — возможность сравнить две строки.
  • StrConv() — возможность преобразовать строку (в Unicode и обратно, в верхний и нижний регистр, сделать первую букву слов заглавной и т.п.):
        Dim sStr As String
        sStr = "Hello, World!"
        MsgBox StrConv("Hello, World!", vbUpperCase)

    В качестве второго параметра параметра могут применяться константы:

      • vbUpperCase: Преобразует все текстовые символы в ВЕРХНИЙ РЕГИСТР
      • vbLowerCase: Преобразует все текстовые символы в нижний регистр
      • vbProperCase: Переводит первый символ каждого слова в Верхний Регистр
      • *vbWide: Преобразует символы строки из однобайтовых в двухбайтовые
      • *vbNarrow: Преобразует символы строки из двухбайтовых в однобайтовые
      • **vbKatakana: Преобразует символы Hiragana в символы Katakana
      • **vbHiragana: Преобразует символы Katakana в символы Hiragana
      • ***vbUnicode: Преобразует строку в Юникод с помощью кодовой страницы системы по умолчанию
      • ***vbFromUnicode: Преобразует строку из Юникод в кодовую страницу системы по умолчанию

    * применимо для локализаций Дальнего востока
    ** применимо только для Японии
    *** не поддерживается операционными системами под управлением Macintosh

  • StrReverse() — «перевернуть» строку, разместив ее символы в обратном порядке. Функция работатет только начиная от Excel 2000 и выше. Пример использования функции, а так же иные методы переворачивания слова можно посмотреть в этой статье: Как перевернуть слово?
  • Tab() — еще одна функция, которая используется для форматирования вывода на консоль. Размножает символы табуляции в том количестве, в котором вы укажете. Если никакое количество не указано, просто вставляет символ табуляции. Для вставки символа табуляции в строковое значение можно также использовать константу vbTab.
  • String() — позволяет получить строку из указанного количества символов(которые опять-таки указываются Вами). Обычно используются для форматирования вывода совместно с функцией Len().

Следующие три функции позволяют работать с массивом строк

Split (<строка> [, <разделитель>]) – преобразует строку в массив подстрок. По умолчанию в качестве разделителя используется пробел. Данную функцию удобно использовать для разбиения предложения на слова. Однако можно указать в этой функции любой другой разделитель. Например, Split(3, «Этo тестовое предложение») возвращает массив из трех строковых значений: «Это», «тестовое», «предложение». Join (<массивСтрок> [, <разделитель>]) – преобразует массив строк в одну строку с указанным разделителем. Filter(<массивСтрок>, <строкаПоиск>[, <включение>] [, <сравнение>]) – просматривает массив строковых значений и ищет в нем все подстроки, совпадающие с заданной строкой. Эта функция имеет четыре аргумента: <строкаПоиск> – искомая строка; <включение> – параметр (булевское значение), который указывает, будут ли возвращаемые строки включать искомую подстроку или, наоборот, возвращаться будут только те строки массива, которые не содержат искомой строки в качестве подстроки; <сравнение> – параметр, определяющий метод сравнения строк. Еще три функции обеспечивают преобразование строк: LCase(<строка>) – преобразует все символы строки к нижнему регистру, например функция LCase(«ПОЧTA») возвращает строку «почта»; UCase(<строка>) – преобразует все символы строки к верхнему регистру; StrConv(<строка>, <преобразование>) – выполняет несколько типов преобразований строки в зависимости от второго параметра. Этот параметр описывается встроенными константами, например функция StrConv(«poccия», VbProperCase) возвращает значение «Россия».

И последние две функции генерируют строки символов

Space(<число>) – создает строку, состоящую из указанного числа пробелов; String(<число>, <символ>) – создает строку, состоящую из указанного в первом аргументе числа символов. Сам символ указывается во втором аргументе.

Пример

Создать программу, работающую со строковыми переменными. Для этого создать форму, в метки которой выходят следующие сообщения: 1 метка: сообщается длина строки, введенной в первое текстовое поле (1 строка); 2 метка: преобразует все символы третьего текстового поля (3 строка) в заглавные буквы; 3 метка: выводит вместе содержание первого и второго текстовых полей (1 и 2 строки).

Технология выполнения

  • Откройте приложение Word, сохраните документ и перейдите в редактор VBA.
  • Создайте форму аналогично приведенному рисунку.
  • Пропишите обработчик события кнопки ОК.
  • Откомпилируйте программу.
  • Запустите форму на выполнение.

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

Private Sub CommandButton1_Click() Dim a As String Dim b As String Dim c As String Dim k As String Dim d As String Dim n As Integer a=TextBox1.Text n=Len(a) Label7.Caption=«длина первой строки равна» & n & « символам» c=TextBox3.Text k=Ucase(с) Label8.Caption=k b=TextBox2.Text d=a + » » + b Label9.Caption=d End Sub

Задача

Нужно, что бы в экселе в ячейке А1 выполнялся поиск слов, записанных через запятую в столбец А2, а результат, и найденные слова, с числом их повторений (если такое возможно) в искомом тексте, записались в другую, третью, ячейку. (ещё лучше бы было, если б они выделялись (ну или подчеркивались) каким ни будь образом в первой ячейке…что бы их сразу видно было Вот так загоняешь в массив слова:

Код Visual Basic
1
2
3
4
5
6
Dim m() As String
If InStr(1, Cells(1, 2).Value, ",") > 0 Then
    m = Split(Replace(Cells(1, 2).Value, " ", ""), ",")
Else
    ReDim m(0): m(0) = Trim(Cells(1, 2).Value)
End If

А потом в цикле по всем словам ищешь(опять же в цикле. во вложенном) Добавлено через 23 минуты

Код Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Option Compare Text
Option Explicit
Sub QWERT()
Dim R, N, K
Dim m() As String
If InStr(1, Cells(1, 2).Value, ",") > 0 Then
    m = Split(Replace(Cells(1, 2).Value, " ", ""), ",")
Else
    ReDim m(0): m(0) = Trim(Cells(1, 2).Value)
End If

For R = 0 To UBound(m) 
N = 1
    If InStr(1, Cells(1, 1).Value, m(R)) > 0 Then
    K = InStr(N, Cells(1, 1).Value, m(R))
        Do
            ПОКРАСИТЬ K, Len(m(R))
            N = K + Len(m(R))
            K = InStr(N, Cells(1, 1).Value, m(R))
        Loop While K > 0
    End If
Next R
End Sub
Sub ПОКРАСИТЬ(ST, LN)
With Cells(1, 1).Characters(Start:=ST, Length:=LN).Font
.Color = RGB(0, 0, 255)
.Bold = True
End With
End Sub

Добавлено через 15 минутА вот так будет искать по началу слова а выделять всё слово

Код Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Sub ПОКРАСИТЬ(ST, LN)
 LN = LN - 1
Do
    LN = LN + 1
Loop While VBA.Mid(Cells(1, 1).Value, ST + LN, 1) <> " "

With Cells(1, 1).Characters(Start:=ST, Length:=LN).Font
.Color = RGB(0, 0, 255)
.Bold = True
End With
End Sub

Можно сделать что бы искало и не с начала слова, а по части слова. —  добавить ещё один цикл Do-Loop. Только смещать начало(ST) влево до пробела (http://www.cyberforum.ru/vba/thread567588.html)

How to: Match a String against a Pattern (Visual Basic)

  • Некоторые символы нужно заключать в квадратные скобки ([ ]). см. Like Operator (Visual Basic).myString состоит из единственного символа H:
    Dim sMatch As Boolean = myString Like "H"

? — один любой символ

  • myString состоит из символа W, за которым следуют 2 любых символа
    Dim sMatch As Boolean = myString Like "W??"

Любой символ из списка [abc] и диапазона [a-c]

Любой символ и затем один из символов A, C или E

  • Dim sMatch As Boolean = myString Like "?[ACE]"
    
    учитывается регистр символов
  •  myString = символы num и затем один символ из диапазона: i, j, k, l, m или n:
    Dim sMatch As Boolean = myString Like "num[i-m]"
    учитывается регистр символов

Like работает с [] как с о строковым массивом нулевой длины string («»).  [] позволяет проверить, что строка является пустой

Символ из списка или отсутствие символа

  1. Оператор Like используется дважды, и результаты объединяются с помощью оператора Or Operator (Visual Basic) или OrElse Operator (Visual Basic).
  2. В шаблон первого оператора вставьте список символов в квадратных скобках ([ ]).
  3. В шаблон второго оператора в место проверки не помещайте ничегоПример: проверка семизначного номера телефона phoneNum, который должен содержать точно три цифры, после которых следует пробел, дефис точка или никакого символа и затем  четыре цифры. (первые три цифры могут быть не отделены от четырех последних — «никакого символа»)
    Dim sMatch As Boolean = 
      (phoneNum Like "###[ -.]####") OrElse (phoneNum Like "#######")

Функция InStr

Показать все

Данная функция возвращает значение типа Variant (Long), определяющее положение первого вхождения одной строки в другую.

См. примеры

Синтаксис

InStr([начальная_позиция, ] строка_1, строка_2 [, тип_сравнения ] )

Функция InStr имеет следующие аргументы:

АРГУМЕНТ ОПИСАНИЕ
начальная_позиция Необязательный. Числовое выражение, которое задает начальную позицию для поиска. Если этот аргумент опущен, поиск начинается с первого знака. Если аргумент начальная_позиция содержит значение Null, возникает ошибка. Если задан аргумент тип_сравнения, аргумент начальная_позиция является обязательным.
строка_1 Обязательный. Строковое выражение, по которому выполняется поиск.
строка_2 Обязательный. Искомое строковое выражение.
тип_сравнения Необязательный. Определяет тип сравнения строк. Если значением аргументатип_сравнения является Null, возникает ошибка. Если аргумент тип_сравненияопущен, тип сравнения определяется параметром Значение Сравнение. Укажите допустимый параметр LCID (LocaleID) для использования правил сравнения, заданных в языковых параметрах.

Параметры

Аргумент тип_сравнения использует следующие параметры:

КОНСТАНТА ЗНАЧЕНИЕ ОПИСАНИЕ
vbUseCompareOption -1 Выполняется сравнение с помощью параметра инструкцииOption Compare.
vbBinaryCompare 0 Выполняется двоичное сравнение.
vbTextCompare 1 Выполняется текстовое сравнение.
vbDatabaseCompare 2 Только в Microsoft Office Access 2007. Выполняется сравнение на основе сведений из базы данных.

Возвращаемые значения

ЕСЛИ ФУНКЦИЕЙ INSTR ВОЗВРАЩАЕТСЯ
строка_1 является пустой 0
значением аргумента строка_1 является Null Null
строка_2 является пустой начальная_позиция
значением аргумента строка_2 является Null Null
строка_2 не найдена 0
строка из аргумента строка_2 найдена в строке из аргументастрока_1 Позиция найденного соответствия
начальная_позиция > строка_2 0

Замечания

Функция InStrB используется с байтовыми данными, содержащимися в строке. Функция InStrB возвращает позицию байта, а не позицию знака первого вхождения одной строки в другую.

Примеры

Использование функции InStr в выражении    Каждый раз при использовании выражений можно использовать функцию InStr. Например, если требуется определить позицию первой точки (.) в поле, которое содержит IP-адрес (названное «IPAddress»), можно использовать функцию InStr для его поиска:

InStr(1,[IPAddress],».»)

Функция InStr рассматривает каждое значение в поле «IPAddress» и возвращает позицию первой точки. Следовательно, если значение первого октета IP-адреса равно 10., функция возвращает значение 3.

Можно использовать другие функции, использующие результат функции InStr, для извлечения значения октета IP-адреса, который предшествует первой точке, например:

Left([IPAddress],(InStr(1,[IPAddress],».»)-1))

В этом примере функция InStr(1,[IPAddress],».») возвращает позицию первой точки. В результате вычитания 1 определяется количество знаков, предшествующих первой точке, в данном случае — 2. Затем функция Left извлекает эти символы с левой части поля «IPAddress», возвращая значение 10.

Использование функции InStr в коде Visual Basic для приложений (VBA)

 ПРИМЕЧАНИЕ.   Приведенные ниже примеры иллюстрируют использование возможностей модуля Visual Basic for Applications (VBA). Чтобы получить дополнительные сведения о работе с VBA, выберите пунктСправочник разработчика в раскрывающемся списке рядом с кнопкой Поиск, а затем введите один или несколько ключевых слов в поле поиска.

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

Dim SearchString, SearchChar, MyPos SearchString ="XXpXXpXXPXXP" ' String to search in. SearchChar = "P" ' Search for "P". ' A textual comparison starting at position 4. Returns 6. MyPos = Instr(4, SearchString, SearchChar, 1) ' A binary comparison starting at position 1. Returns 9. MyPos = Instr(1, SearchString, SearchChar, 0) ' Comparison is binary by default ' (last argument is omitted). MyPos = Instr(SearchString, SearchChar) ' Returns 9. MyPos = Instr(1, SearchString, "W") ' Returns 0. 

ccc

Содержание

  1. Основы работы со строками в Visual Basic
  2. Строковые переменные
  3. Символы в строках
  4. Неизменность строк
  5. Строки в VBA
  6. удалить из строки знак » и знак =
  7. Вариант1
  8. Вариант
  9. Вариант
  10. Вариант
  11. Вариант
  12. Вариант
  13. В верхний и в нижний регистр
  14. Операции со строками
  15. Таблица «Функции работы со строками»
  16. Следующие три функции позволяют работать с массивом строк
  17. И последние две функции генерируют строки символов
  18. Пример
  19. Технология выполнения
  20. Задача
  21. How to: Match a String against a Pattern (Visual Basic)

Основы работы со строками в Visual Basic

Тип данных String представляет последовательность символов (каждый из которых, в свою очередь, представляет экземпляр типа данных Char ). В этом разделе представлены основные понятия строк в Visual Basic.

Строковые переменные

Экземпляру строки можно назначить литеральное значение, которое представляет ряд символов. Например:

Переменная String также может принимать любое выражение, результатом которого является строка. Ниже приведены примеры.

Любой литерал, который присваивается переменной String , должен быть заключен в кавычки («»). Это означает, что кавычки в пределах строки не могут быть представлены кавычкой. Например, следующий код вызовет ошибку компиляции:

Этот код вызывает ошибку, так как компилятор завершает строку после второй пары кавычек, а остаток строки интерпретируется как код. Чтобы решить эту проблему, Visual Basic интерпретирует две кавычки в строковом литерале как одну кавычку в строке. В следующем примере показан правильный способ указания кавычек в строке:

В предыдущем примере два символа кавычек перед словом Look становятся одним символом кавычек в строке. Три символа кавычек в конце строки представляют один символ кавычек в строке и конечный символ строки.

Строковые литералы могут содержать несколько строк:

Результирующая строка содержит последовательности новых строк, используемых в строковом литерале (vbcr, vbcrlf и т. д.). Вам больше не требуется использовать старое решение:

Символы в строках

Строку можно представить как последовательность значений Char . При этом тип String имеет встроенные функции, которые позволяют работать со строками, как с массивами. Как и все массивы в платформа .NET Framework, это отсчитываемые от нуля массивы. К определенному символу в строке можно обратиться с помощью свойства Chars , которое предоставляет механизм доступа к символу по позиции, в которой он отображается в строке. Например:

В приведенном выше примере свойство Chars строки возвращает четвертый символ в строке, D , и присваивает его myChar . Вы также можете получить длину определенной строки с помощью свойства Length . Если вам требуется выполнить несколько манипуляций со строкой, можно преобразовать ее в массив экземпляров Char с помощью функции ToCharArray строки. Например:

Переменная myArray теперь содержит массив значений Char , каждое из которых представляет символ из myString .

Неизменность строк

Строка неизменяема, что означает, что ее значение нельзя изменить после ее создания. Однако это не мешает назначить строковой переменной более одного значения. Рассмотрим следующий пример.

Здесь строковая переменная создается, получает значение, которое затем изменяется.

В частности, в первой строке создается экземпляр типа String , которому присваивается значение This string is immutable . Во второй строке примера создается новый экземпляр, которому присваивается значение Or is it? . При этом строковая переменная удаляет ссылку на первый экземпляр и сохраняет ссылку на новый экземпляр.

В отличие от других встроенных типов данных String — это ссылочный тип. Если переменная ссылочного типа передается в качестве аргумента функции или подпрограмме, вместо фактического значения строки передается ссылка на адрес в памяти, где хранятся данные. Поэтому в предыдущем примере имя переменной остается таким же, но оно указывает на другой экземпляр класса String , который содержит новое значение.

Источник

Строки в VBA

удалить из строки знак » и знак =

Вариант1

Вариант

Можно еще через байтовый массив:

Вариант

Или фильтрацию мидом:

Строку 6 можно заменить лайкой:
Код Visual Basic
1
If L Like «[!»»=]» Then Zam = Zam + L

Вариант

Еще через поиск позиции и рекурсию:

Еще можно через регулярные выражения, но я их не знаю.

Вариант

Через поиск справа налево и рекурсию:

Вариант

А ещё есть Split и Join

В верхний и в нижний регистр

или StrConv() — преобразовать строку (в Unicode и обратно, в верхний и нижний регистр, сделать первую букву слов заглавной и т.п.) — см. ниже

Операции со строками

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

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

Код Visual Basic
Функция Описание Пример
Len(str) Определяет длину строки Из а=lеn(«Персонажи») следует а=9
Left ( , ) Выделяет из аргумента указанное количество символов слева Left(» 1234string», 4) =»1234″
Right( , ) Выделяет из аргумента указанное количество символов справа Right(» 1234string», 6) =»string»
Mid( , [, ]) Выделяет из аргумента подстроку с указанным числом символов, начиная с позиции Mid («12345678″, 4.3) =»456»
Mid( , ) Выделяется подстрока от позиции до конца строки Mid («12345678″, 4) =»45678»
LTrim ( ) Удаляет пробелы в начале строки LTrim(» печать») =»печать»
RTrim ( ) Удаляет пробелы в конце строки RTrim(«печать «) =»печать»
Trim ( ) Удаляет пробелы в начале и в конце строки Trim(» печать «) =»печать»
InStr([ , ] , [, ]) Производит поиск подстроки в строке. Возвращает позицию первого вхождения строки в строку , — позиция, с которой начинается поиск. Если этот аргумент пропущен, поиск начинается с начала строки Instr(«C:Temp test.mdb», «Test»)=9 Если искомая строка не находится в указанной строке, функция возвращает 0
InStrRev ([ , ] , [, ]) Ищет подстроку в строке, но начинает поиск с конца строки и возвращает позицию последнего вхождения подстроки. Необязательный аргумент определяет тип сравнения двух строк
Replace ( , , ) Позволяет заменить в строке одну подстроку другой. Эта функция ищет все вхождения аргумента в аргументе и заменяет их на

Для сравнения строковых значений можно использовать обычные операторы сравнения числовых значений, так как при сравнении символов сравниваются их двоичные коды. Для сравнения строковых значений также применяется оператор Like, который позволяет обнаруживать неточное совпадение, например выражение «Входной сигнал» Like «Вход*» будет иметь значение True, так как сравниваемая строка начинается со слова «Вход». Символ звездочка (*) в строке заменяет произвольное число символов. Другие символы, которые обрабатываются оператором Like в сравниваемой строке:

  • ? – любой символ (один);
  • #– одна цифра (0–9);
  • [ ] – символ, совпадающий с одним из символов списка;
  • [! ] – символ, не совпадающий ни с одним из символов списка.
  • ASC()— эта функция позволяет вернуть числовой код для переданного символа. Например, ASC( «D» ) вернет 68. Эту функцию удобно использовать для того, чтобы определить следующую или предыдущую букву. Обычно она используется вместе с функцией Chr(), которая производит обратную операцию — возвращает символ по переданному его числовому коду.Варианты этой функции — AscB() и AscW():
    • AscB() — возвращает только первый байт числового кода для символа.
    • AscW() — возвращает код для символа в кодировке Unicode
  • Chr() — возвращает символ по его числовому коду. Может использоваться в паре с функцией Asc(), но чаще всего её применяют, когда нужно вывести служебный символ (например кавычки — » ), т.к. кавычки просто так в VBA-коде не ввести(нужно ставить двойные). Я обычно именно эту функцию и использую.

    Есть варианты этой функции — ChrB() и ChrW(). Работают аналогично таким же вариантам для функции Asc().
    InStr() и InStrRev()— одна из самых популярных функций. Позволяет обнаружить в теле строковой переменной символ или последовательность символов и вернуть их позицию. Если последовательность не обнаружена, то возвращается 0.

    Разница функций в том, что InStr() ищет указанное слово от начала строки, а InStrRev() с конца строки
    Left(), Right(), Mid()— возможность взять указанное вами количество символов из существующей строковой переменной слева, справа или из середины соответственно.

    В качестве второго параметра параметра могут применяться константы:

      • vbUpperCase: Преобразует все текстовые символы в ВЕРХНИЙ РЕГИСТР
      • vbLowerCase: Преобразует все текстовые символы в нижний регистр
      • vbProperCase: Переводит первый символ каждого слова в Верхний Регистр
      • *vbWide: Преобразует символы строки из однобайтовых в двухбайтовые
      • *vbNarrow: Преобразует символы строки из двухбайтовых в однобайтовые
      • **vbKatakana: Преобразует символы Hiragana в символы Katakana
      • **vbHiragana: Преобразует символы Katakana в символы Hiragana
      • ***vbUnicode: Преобразует строку в Юникод с помощью кодовой страницы системы по умолчанию
      • ***vbFromUnicode: Преобразует строку из Юникод в кодовую страницу системы по умолчанию

    * применимо для локализаций Дальнего востока
    ** применимо только для Японии
    *** не поддерживается операционными системами под управлением Macintosh

  • StrReverse() — «перевернуть» строку, разместив ее символы в обратном порядке. Функция работатет только начиная от Excel 2000 и выше. Пример использования функции, а так же иные методы переворачивания слова можно посмотреть в этой статье: Как перевернуть слово?
  • Tab() — еще одна функция, которая используется для форматирования вывода на консоль. Размножает символы табуляции в том количестве, в котором вы укажете. Если никакое количество не указано, просто вставляет символ табуляции. Для вставки символа табуляции в строковое значение можно также использовать константу vbTab.
  • String() — позволяет получить строку из указанного количества символов(которые опять-таки указываются Вами). Обычно используются для форматирования вывода совместно с функцией Len().

Следующие три функции позволяют работать с массивом строк

Split ( [, ]) – преобразует строку в массив подстрок. По умолчанию в качестве разделителя используется пробел. Данную функцию удобно использовать для разбиения предложения на слова. Однако можно указать в этой функции любой другой разделитель. Например, Split(3, «Этo тестовое предложение») возвращает массив из трех строковых значений: «Это», «тестовое», «предложение». Join ( [, ]) – преобразует массив строк в одну строку с указанным разделителем. Filter( , [, ] [, ]) – просматривает массив строковых значений и ищет в нем все подстроки, совпадающие с заданной строкой. Эта функция имеет четыре аргумента: – искомая строка; – параметр (булевское значение), который указывает, будут ли возвращаемые строки включать искомую подстроку или, наоборот, возвращаться будут только те строки массива, которые не содержат искомой строки в качестве подстроки; – параметр, определяющий метод сравнения строк. Еще три функции обеспечивают преобразование строк: LCase( ) – преобразует все символы строки к нижнему регистру, например функция LCase(«ПОЧTA») возвращает строку «почта»; UCase( ) – преобразует все символы строки к верхнему регистру; StrConv( , ) – выполняет несколько типов преобразований строки в зависимости от второго параметра. Этот параметр описывается встроенными константами, например функция StrConv(«poccия», VbProperCase) возвращает значение «Россия».

И последние две функции генерируют строки символов

Space( ) – создает строку, состоящую из указанного числа пробелов; String( , ) – создает строку, состоящую из указанного в первом аргументе числа символов. Сам символ указывается во втором аргументе.

Пример

Создать программу, работающую со строковыми переменными. Для этого создать форму, в метки которой выходят следующие сообщения: 1 метка: сообщается длина строки, введенной в первое текстовое поле (1 строка); 2 метка: преобразует все символы третьего текстового поля (3 строка) в заглавные буквы; 3 метка: выводит вместе содержание первого и второго текстовых полей (1 и 2 строки).

Технология выполнения

  • Откройте приложение Word, сохраните документ и перейдите в редактор VBA.
  • Создайте форму аналогично приведенному рисунку.
  • Пропишите обработчик события кнопки ОК.
  • Откомпилируйте программу.
  • Запустите форму на выполнение.

Private Sub CommandButton1_Click() Dim a As String Dim b As String Dim c As String Dim k As String Dim d As String Dim n As Integer a=TextBox1.Text n=Len(a) Label7.Caption=«длина первой строки равна» & n & « символам» c=TextBox3.Text k=Ucase(с) Label8.Caption=k b=TextBox2.Text d=a + » » + b Label9.Caption=d End Sub

Задача

Нужно, что бы в экселе в ячейке А1 выполнялся поиск слов, записанных через запятую в столбец А2, а результат, и найденные слова, с числом их повторений (если такое возможно) в искомом тексте, записались в другую, третью, ячейку. (ещё лучше бы было, если б они выделялись (ну или подчеркивались) каким ни будь образом в первой ячейке…что бы их сразу видно было Вот так загоняешь в массив слова:

А потом в цикле по всем словам ищешь(опять же в цикле. во вложенном) Добавлено через 23 минуты

Код Visual Basic

Добавлено через 15 минут А вот так будет искать по началу слова а выделять всё слово

Код Visual Basic

Можно сделать что бы искало и не с начала слова, а по части слова. — добавить ещё один цикл Do-Loop. Только смещать начало(ST) влево до пробела (http://www.cyberforum.ru/vba/thread567588.html)

How to: Match a String against a Pattern (Visual Basic)

Проверка соответствия строки шаблону String Data Type (Visual Basic) — оператор Like (Visual Basic). левый операнд оператора Like- строковое выражение, а правый — строка шаблона Like возвращает значение типа Boolean

Источник

Adblock
detector

Код Visual Basic

Дополнительные сведения: строковые функции (Visual Basic)

Пример: Укасе

В данном примере функция UCase используется для возврата строки в верхнем регистре.

‘ String to convert.Dim lowerCase As String = “Hello World 1234″‘ Returns “HELLO WORLD 1234”.Dim upperCase As String = UCase(lowerCase)

Источник: http://docs.microsoft.com/ru-ru/dotnet/visual-basic/language-reference/functions/string-functions

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

Основные функции для работы с текстом в VBA Excel:

Функция Описание
Asc(строка) Возвращает числовой код символа, соответствующий первому символу строки. Например: MsgBox Asc(«/Stop»). Ответ: 47, что соответствует символу «/».
Chr(код символа) Возвращает строковый символ по указанному коду. Например: MsgBox Chr(47). Ответ: «/».
Format(Expression, [FormatExpression], [FirstDayOfWeek], [FirstWeekOfYear]) Преобразует число, дату, время в строку (тип данных Variant (String)), отформатированную в соответствии с инструкциями, включенными в выражение формата. Подробнее…
InStr([начало], строка1, строка2, [сравнение]) Возвращает порядковый номер символа, соответствующий первому вхождению одной строки (строка2) в другую (строка1) с начала строки. Подробнее…
InstrRev(строка1, строка2, [начало, [сравнение]]) Возвращает порядковый номер символа, соответствующий первому вхождению одной строки (строка2) в другую (строка1) с конца строки.
Join(SourceArray,[Delimiter]) Возвращает строку, созданную путем объединения нескольких подстрок из массива. Подробнее…
LCase(строка) Преобразует буквенные символы строки в нижний регистр.
Left(строка, длина) Возвращает левую часть строки с заданным количеством символов. Подробнее…
Len(строка) Возвращает число символов, содержащихся в строке.
LTrim(строка) Возвращает строку без начальных пробелов (слева). Подробнее…
Mid(строка, начало, [длина]) Возвращает часть строки с заданным количеством символов, начиная с указанного символа (по номеру). Подробнее…
Replace(expression, find, replace, [start], [count], [compare]) Возвращает строку, полученную в результате замены одной подстроки в исходном строковом выражении другой подстрокой указанное количество раз. Подробнее…
Right(строка, длина) Возвращает правую часть строки с заданным количеством символов. Подробнее…
RTrim(строка) Возвращает строку без конечных пробелов (справа). Подробнее…
Space(число) Возвращает строку, состоящую из указанного числа пробелов. Подробнее…
Split(Expression,[Delimiter],[Limit],[Compare]) Возвращает одномерный массив подстрок, извлеченных из указанной строки с разделителями. Подробнее…
StrComp(строка1, строка2, [сравнение]) Возвращает числовое значение Variant (Integer), показывающее результат сравнения двух строк. Подробнее…
StrConv(string, conversion) Изменяет регистр символов исходной строки в соответствии с заданным параметром «conversion». Подробнее…
String(число, символ) Возвращает строку, состоящую из указанного числа символов. В выражении «символ» может быть указан кодом символа или строкой, первый символ которой будет использован в качестве параметра «символ». Подробнее…
StrReverse(строка) Возвращает строку с обратным порядком следования знаков по сравнению с исходной строкой. Подробнее…
Trim(строка) Возвращает строку без начальных (слева) и конечных (справа) пробелов. Подробнее…
UCase(строка) Преобразует буквенные символы строки в верхний регистр.
WorksheetFunction.Trim(строка) Функция рабочего листа, которая удаляет все лишние пробелы (начальные, конечные и внутренние), оставляя внутри строки одиночные пробелы.

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

Источник: http://vremya-ne-zhdet.ru/vba-excel/rabota-s-tekstom/

Синтаксис

variablename = “string”

Источник: http://maxfad.ru/programmer/vba/357-rabota-so-strokami-v-vba-instr-lcase-ucase-left-right-mid-ltrim-rtrim-trim-len-replace-space-strcomp-string-strreverse.html

Краткое руководство по текстовым функциям

Текстовые операции Функции
Добавить две или более строки Format or «&»
Построить текст из массива Join
Сравнить StrComp or «=»
Сравнить — шаблон Like
Преобразовать в текст CStr, Str
Конвертировать текст в дату Просто: CDate 
Дополнительно: Format
Преобразовать текст в число Просто: CLng, CInt, CDbl, Val
Дополнительно: Format
Конвертировать в юникод, широкий, узкий StrConv
Преобразовать в верхний / нижний регистр StrConv, UCase, LCase
Извлечь часть текста Left, Right, Mid
Форматировать текст Format
Найти символы в тексте InStr, InStrRev
Генерация текста String
Получить длину строки Len
Удалить пробелы LTrim, RTrim, Trim
Заменить часть строки Replace
Перевернуть строку StrReverse
Разобрать строку в массив Split

Источник: http://excelpedia.ru/makrosi-v-excel/funkcii-po-rabote-s-tekstom

Функция InStr

​Смотрите также​
​ Else: MsgBox Mid(ProbeString,​

​ Exit Sub End​​ названием которого является​​ на одну и​​ Right$(о, 3) С_конца_буквы_1234_О​​о = “1234567891011”​lumn)​ String Dim Sum​​ поможем​​ Type mismatch,​ String a =​ события щелчка по​ вы ребята” должно​Возвращаемое значение​Option Compare​String2​InStr([Start,]String1,String2[,Compare])​ sympos) End Select​ If nstroka =​ год работы.​

​ ту же ошибку:​

​ = Right$(о, 4)​​ Буква_1_О = Left$(о,​​Я бы написал​ As Double Dim​KuklP​что понятно, т.к.​ Text1.Text b =​ кнопке и откроет​ получиться “еынссалк вы​Функция​vbBinaryCompare​найдена внутри​InStrB([Start,]String1,String2[,Compare])​

​ End Sub​

​ Right(stroka, (ls -​Заранее очень благодарен!​ “Ошибка времени выполнения​ С_конца_буквы_12345_О = Right$(о,​

​ 1) Буква_1_О_м =​

​ так Directory =​ ​ DirColumn As Double​
​: Кросс:​​ пытаетесь объединить строку​ ​ UCase(a) Text2.Text =​
​ окно кода формы​​ ребята”.​ ​Str​
​0​​String1​ ​Функция​
​dashulja​​ index) + 1)​ ​Watcher_1​
​ Basic. Переменная типа​​ 5) С_конца_буквы_123456_О =​ ​ Mid$(о, 1, 1)​
​ Cells(7, DirColumn)​​ Application.Volatile True For​​http://www.excel-vba.ru/forum/index.php?topic=2491.0​ ​ (результат функции​ b End Sub​
​ с этой процедурой.​​Нужно и с​​(Expression) возвращает значение Number,​ ​Выполняется побитовое сравнение​

​Позиция, в которой обнаружено​

​InStr​ ​: Даны 3 строки​
​ MsgBox nstroka, vbInformation,​ ​: Держите​ Object не установлена”​ Right$(о, 6) С_конца_буквы_1234567_О​ Буква_2_я_О = Right$((Left$(о,​beryllium​ Each cell In​​beryllium​Replace​​ Программа записывает все​​ Вам остается только​ помошью Sub, и​​ преобразованное в текстовый​​vbTextCompare​​ совпадение​(​​ символов, содержащие пробелы.​
​ “поиск в строке”​ ​IseeYOU​ на строчках соответственно​
​ = Right$(о, 7)​ ​ 2)), 1) Буква_3_я_О​
​: нда.. все печально​ ​ DirRange If cell​: Добрый день.​​), а не массив.​​ слова с заглавной​​ вписать туда строчки,​ с помощью Function.​​ тип данных String.​1​​Start​​In Str​ Вывести в столбцы​​ End SubМожно даже​

​: Огромное спасибо =)​

​ “For i =​​ С_конца_буквы_12345678_О = Right$(о,​​ = Right$((Left$(о, 3)),​

​. давно не кодил​ ​ = DirNumber Then​ ​Столкнулся со задачкой,​
​Без​ ​ (((​ ​ данные​Я знаю как​​При преобразовании в​
​Выполняется текстовое сравнение​ ​>​ ​ing) служит для поиска​
​ А, В, С​ ​ немного сократить.​ ​alex2476​
​ 1 To ActiveDocument.Paragraphs.Count”​ 8) С_конца_буквы_123456789_О =​ ​ 1) Буква_4_я_О =​ просто. надо изучить​ DirColumn = cell.Column​ начал писать, но​

​Join​ ​МираРизовна​Igor_Tr​ просто перевести строку​ начале строки возвращаемого​vbDatabaseCompare​String2​ номера символа(номера байта​ активного рабочего листа​alex2476​: Знатоки подскажите пожалуйста,​ и “InsPreLast$ =​ Right$(о, 9) С_конца_буквы_12345678910_О​ Right$((Left$(о, 4)), 1)​ как правильно дебагить​ End If Next​​ что-то не идет​​вариант работает, но​: Private Sub CommandButton1_Click()​, плюс одну команду​ наоборот, но чтобы​ значения резервируется место​​2​​0​ для​ слова из соответствующих​: Спасибо уважаемый Профессор,​ как в VBA​​ VBA.Left$(S, Len(S) -​​ = Right$(о, 10)​ Буква_5_я_О = Right$((Left$(о,​​ в среде VBA​​ Directory = DirRange(1,​ пока, поскольку c​ ​ есть подводный камень​

​ Dim c() As​

Источник: http://my-excel.ru/tekst/excel-vba-rabota-so-strokami.html

пример

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

Private Sub Constant_demo_Click() Dim Var As Variant Var = “Microsoft VBScript” MsgBox (“Line 1 : ” & InStr(1, Var, “s”)) MsgBox (“Line 2 : ” & InStr(7, Var, “s”)) MsgBox (“Line 3 : ” & InStr(1, Var, “f”, 1)) MsgBox (“Line 4 : ” & InStr(1, Var, “t”, 0)) MsgBox (“Line 5 : ” & InStr(1, Var, “i”)) MsgBox (“Line 6 : ” & InStr(7, Var, “i”)) MsgBox (“Line 7 : ” & InStr(Var, “VB”)) End Sub

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

Line 1 : 6
Line 2 : 0
Line 3 : 8
Line 4 : 9
Line 5 : 2
Line 6 : 16
Line 7 : 11

Возвращает первое вхождение указанной подстроки. Поиск происходит слева направо.

InStrRev

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

Источник: http://maxfad.ru/programmer/vba/357-rabota-so-strokami-v-vba-instr-lcase-ucase-left-right-mid-ltrim-rtrim-trim-len-replace-space-strcomp-string-strreverse.html

Пример: mid

В этом примере Mid функция используется для возврата указанного числа символов из строки.

‘ Creates text string.Dim testString As String = “Mid Function Demo”‘ Returns “Mid”.Dim firstWord As String = Mid(testString, 1, 3)’ Returns “Demo”.Dim lastWord As String = Mid(testString, 14, 4)’ Returns “Function Demo”.Dim midWords As String = Mid(testString, 5)

Источник: http://docs.microsoft.com/ru-ru/dotnet/visual-basic/language-reference/functions/string-functions

Ключевые слова для работы с текстом

Ключевое слово Описание
& Оператор & объединяет два выражения (результат = выражение1 & выражение2). Если выражение не является строкой, оно преобразуется в Variant (String), и результат возвращает значение Variant (String). Если оба выражения возвращают строку, результат возвращает значение String.
vbCrLf Константа vbCrLf сочетает в себе возврат каретки и перевод строки (Chr(13) + Chr(10)) и переносит последующий текст на новую строку (результат = строка1 & vbCrLf & строка2).
vbNewLine Константа vbNewLine в VBA Excel аналогична константе vbCrLf, также сочетает в себе возврат каретки и перевод строки (Chr(13) + Chr(10)) и переносит текст на новую строку (результат = строка1 & vbNewLine & строка2).

Источник: http://vremya-ne-zhdet.ru/vba-excel/rabota-s-tekstom/

LCASE

Функция LCase возвращает строку после преобразования введенной строки в строчные буквы.

Источник: http://maxfad.ru/programmer/vba/357-rabota-so-strokami-v-vba-instr-lcase-ucase-left-right-mid-ltrim-rtrim-trim-len-replace-space-strcomp-string-strreverse.html

Left

Функция Left возвращает указанное количество символов с левой стороны данной входной строки.

Источник: http://maxfad.ru/programmer/vba/357-rabota-so-strokami-v-vba-instr-lcase-ucase-left-right-mid-ltrim-rtrim-trim-len-replace-space-strcomp-string-strreverse.html

Пример: InStr

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

‘ String to search in.Dim searchString As String = “XXpXXpXXPXXP”‘ Search for “P”.Dim searchChar As String = “P”Dim testPos As Integer’ A textual comparison starting at position 4. Returns 6.testPos = InStr(4, searchString, searchChar, CompareMethod.Text)’ A binary comparison starting at position 1. Returns 9.testPos = InStr(1, SearchString, SearchChar, CompareMethod.Binary)’ If Option Compare is not set, or set to Binary, return 9.’ If Option Compare is set to Text, returns 3.testPos = InStr(searchString, searchChar)’ Returns 0.testPos = InStr(1, searchString, “W”)

Источник: http://docs.microsoft.com/ru-ru/dotnet/visual-basic/language-reference/functions/string-functions

LTrim

Функция Ltrim удаляет пробелы с левой стороны строки.

Источник: http://maxfad.ru/programmer/vba/357-rabota-so-strokami-v-vba-instr-lcase-ucase-left-right-mid-ltrim-rtrim-trim-len-replace-space-strcomp-string-strreverse.html

См. также

  • Ключевые слова
  • Члены библиотеки времени выполнения Visual Basic
  • Сводка по работе со строками
  • Методы класса System. String

Источник: http://docs.microsoft.com/ru-ru/dotnet/visual-basic/language-reference/functions/string-functions

Len

Функция Len возвращает длину данной входной строки, включая пробелы.

Источник: http://maxfad.ru/programmer/vba/357-rabota-so-strokami-v-vba-instr-lcase-ucase-left-right-mid-ltrim-rtrim-trim-len-replace-space-strcomp-string-strreverse.html

Понравилась статья? Поделить с друзьями:
  • Символ квадратного корня в excel
  • Символ начала формулы в excel
  • Символ квадратик для галочки в word
  • Символ начала абзаца word
  • Символ квадрата числа word