Vba excel буквы в строке

Работа с текстом в коде 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 запустит замедленную печать символов в поле надписи, имитируя печатную машинку.


На чтение 12 мин. Просмотров 18.2k.

VBA Instr

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

Тем не менее, она часто используется, чтобы помочь извлечь часть строки, и эту задачу она выполняет плохо.

Если вы обнаружили, что извлечение текста в VBA является болезненным процессом, тогда читайте дальше. Эта статья покажет вам более простой и лучший способ, используя три реальных примера!

Содержание

  1. Краткое руководство к статье
  2. Краткая справка
  3. Введение
  4. Когда VBA InStr, Left, Right и Mid полезны
  5. Работа со строками различной длины
  6. Использование функции VBA InStr с Mid
  7. Функция Split
  8. Пример 1: Получение части имени файла
  9. Пример 2: диапазон IP-адресов
  10. Пример 3. Проверьте правильность имени файла
  11. Заключение

Краткое руководство к статье

В следующей таблице приведено краткое руководство к тому, что рассматривается в этой статье.

Строка Тип Задача Как
1234ABC334 Фиксированный размер Оставить слева 4 символа Left(s,4)
1234ABC334 Фиксированный размер Оставить
справа 3
символа
Right(s,3)
1234ABC334 Фиксированный размер Оставить 5, 6, 7 символы Mid(s,5,3)
«Иван
Петрович
Сидоров»
Переменный
размер
Оставить имя Split(s,» «)(0)
«Иван
Петрович
Сидоров»
Переменный
размер
Оставить
отчество
Split(s,» «)(1)
«Иван
Петрович
Сидоров»
Переменный
размер
Оставить
фамилию
Split(s,» «)(2)
«Иван
Петрович
Сидоров»
Переменный
размер
Оставить
фамилию
Dim v As
Variant
v = Split(s, » «)
lastname= v(UBound(v))

Краткая справка

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

  • Если вы хотите узнать больше о функциях InStr или InStrRev, пожалуйста, прочитайте Поиск в строке.
  • Если вы хотите узнать больше о функциях Mid, Left или Right, посмотрите раздел Извлечение части строки.
  • Для получения дополнительной информации о функции Split проверьте Строка в массив, используя Split.
  • Оператор Like включен в Сравнение строк с шаблоном

Я использую Debug.Print в моих примерах. Он печатает значения в Immediate Window, которое вы можете просмотреть, нажав Ctrl + G (или выберите View-> Immediate Window)

Введение

В этой статье я собираюсь показать вам лучший способ извлечения символов из строки, чем использование функции VBA InStr с Left, Right или Mid.

Эта статья разбита следующим образом:

  • Раздел 1: Как извлечь из строк фиксированного размера.
  • Раздел 2: Как извлечь из строк переменного размера.
  • Раздел 3: Как извлечь из строки переменного размера, используя функцию Split.
  • Разделы с 4 по 6: некоторые примеры из реальной жизни.

Когда VBA InStr, Left, Right и Mid полезны

Если вы хотите проверить, содержит ли строка значение, InStr подходит для этой работы. Если вы хотите сделать простое извлечение, то отлично подойдут Left, Right и Mid.

Использование InStr для проверки, содержит ли строка текст

В следующем примере мы проверяем, содержит ли ФИО «Петрович». Если возвращаемое значение InStr больше нуля, то строка содержит значение, которое мы проверяем.

' Проверьте, содержит ли строка Петрович
    If InStr("Иван Петрович Сидоров", "Петрович") > 0 Then
        Debug.Print "Найдено"
    End If

Извлечение с Left, Right и Mid

Функция Left используется для получения символов слева от строки.
Функция Right используется для получения символов справа от строки.
Функция Mid используется для середины строки. Она такая же, как
Left, за исключением того, что вы даете ему стартовую позицию.

Sub IzvlechTekst()

    Dim s As String: s = "ABCD-7789.WXYZ"

    Debug.Print Left(s, 2) ' Печатает AB
    Debug.Print Left(s, 4) ' Печатает ABCD

    Debug.Print Right(s, 2) ' Печатает YZ
    Debug.Print Right(s, 4) ' Печатает WXYZ

    Debug.Print Mid(s, 1, 2) ' Печатает AB
    Debug.Print Mid(s, 6, 4) ' Печатает 7789

End Sub

VBA Left, Right and Mid

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

Используйте Left, Right или Mid, когда символы всегда будут в одной и той же позиции.

Работа со строками различной длины

Многие из строк, с которыми вы имеет дело, разной длины. Простой пример — когда у вас есть дело со списком имен. Длина строки и требуемая часть (например, имя) могут каждый раз отличаться. Например:

Brooke Hilt
Pamela Jurado
Zack Kinzel
Eddy Wormley
Kaitlyn Rainer
Jacque Trickett
Kandra Stanbery
Margo Hoppes
Berenice Meier
Garrett Hyre

(Если вам нужен случайный список имен, попробуйте этот генератор случайных имен)

Использование функции VBA InStr с Left

В следующем примере мы собираемся получить имя из строки. В этой строке первое имя — это имя перед первым пробелом.

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

Sub PoluchitImya()

    Dim s As String, lPosition As Long

    s = "John Henry Smith"
    ' Печатает John
    lPosition = InStr(s, " ") - 1
    Debug.Print Left(s, lPosition)

    s = "Lorraine Huggard"
    ' Печатает Lorraine
    lPosition = InStr(s, " ") - 1
    Debug.Print Left(s, lPosition)

End Sub

Давайте посмотрим на первый пример в приведенном выше коде. Первый пробел находится в позиции 5. Мы вычтем 1, что дает нам позицию 4. Это позиция последней буквы John, т.е.

VBA InStr and Left

Затем мы даем 4 функции Left, и она возвращает первые четыре символа, например, «John»

Мы можем выполнить ту же задачу в одной строке, передав возвращаемое значение из InStr в функцию Left.

 Dim s As String
    s = "John Henry Smith"

    ' Печатает John
    Debug.Print Left(s, InStr(s, " ") - 1)

Использование функции VBA InStr с Right

В этом примере мы получим последнее слово в строке, то есть Smith. Мы можем использовать функцию InStrRev. Это то же самое, что InStr, за исключением того, что поиск выполняется с конца строки.

Важно отметить, что InStrRev дает нам позицию с начала строки. Поэтому нам нужно использовать его немного иначе, чем мы использовали InStr и Left.

Sub PoluchitFamiliyu()

    Dim s As String: s = "John,Henry,Smith"
    Dim Position As Long, Length As Long

    Position = InStrRev(s, ",")
    Length = Len(s)

    ' Печатает Smith
    Debug.Print Right(s, Length - Position)

    ' Альтернативный метод. Печатает Smith - делает в одну строку
    Debug.Print Right(s, Len(s) - InStrRev(s, ","))

End Sub

Как работает приведенный выше пример:

  • Мы получаем позицию последнего пробела, используя InStrRev: 11
  • Мы получаем длину строки: 16.
  • Вычитаем позицию из длины: 16-11 = 5
  • Мы даем 5 функции Right и возвращаем Smith

VBA Instr and Right

Использование функции VBA InStr с Mid

В следующем примере мы получим «Henry» из строки. Слово, которое мы ищем, находится между первым и вторым пробелом.

Мы будем использовать функцию Mid здесь.

Sub PoluchitVtoroeImya()

    Dim s As String: s = "John Henry Smith"

    Dim firstChar As Long, secondChar As Long
    Dim count As Long

    ' Найти пробел плюс 1. Результат 6
    firstChar = InStr(s, " ") + 1
    ' Найти 2-й пробел. Результат 11
    secondChar = InStr(firstChar, s, " ")
    ' Получить число символов. Результат 5
    count = secondChar - firstChar

    ' Печатает Henry
    Debug.Print Mid(s, firstChar, count)

End Sub

Как видите, это сложно сделать и требует немного усилий, чтобы выяснить. Нам нужно найти первое место. Тогда нам нужно найти второе место. Затем мы должны вычесть одно из другого, чтобы дать нам количество символов, которые нужно взять.

VBA Instr and Mid

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

Функция Split

Мы можем использовать функцию Split для выполнения приведенных выше примеров. Функция Split разбивает строку на массив. Тогда мы можем легко получить доступ к каждому элементу.

Давайте попробуем те же три примера еще раз, и на этот раз мы будем использовать Split.

  Dim s As String: s = "John Henry Smith"

    Debug.Print Split(s, " ")(0) ' John
    Debug.Print Split(s, " ")(1) ' Henry
    Debug.Print Split(s, " ")(2) ' Smith

Ого! Какая разница с использованием Split. Как это работает:

  1. Функция Split разбивает строку везде, где есть пробел.
  2. Каждый элемент помещается в массив, начиная с нуля.
  3. Используя номер местоположения, мы можем получить доступ к элементу массива.  

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

Примечание: первая позиция в массиве равна нулю. Наличие нулевых массивов является стандартным в языках программирования.

0 1 2
John Henry Smith

В приведенном выше коде мы разделяем строку каждый раз, когда ее используем. Мы также можем разделить строку один раз и сохранить ее в переменной массива. Тогда мы можем получить к нему доступ, когда захотим.

Sub SplitName()
    Dim s As String: s = "John Henry Smith"
    Dim arr() As String
    arr = Split(s, " ")

    Debug.Print arr(0) ' John
    Debug.Print arr(1) ' Henry
    Debug.Print arr(2) ' Smith
End Sub

Если вы хотите узнать больше о массивах, я написал о них целую статью под названием «Полное руководство по использованию массивов в Excel VBA».

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

Пожалуйста, не стесняйтесь попробовать это сами. Это отличный способ учиться, и вы можете повеселиться, пытаясь понять их (или, может быть, только у меня так!)

Пример 1: Получение части имени файла

Представьте, что мы хотим извлечь числа из следующих имен файлов

«VB_23476_Val.xls»
«VV_987_Val.txt»
«VZZA_12223_Val.doc»

Это похоже на пример, где мы получаем второй элемент. Чтобы получить значения здесь, мы используем подчеркивание (то есть «_»), чтобы разбить строку. Смотрите пример кода ниже:

Sub PoluchitNomer()

    ' Печатает 23476
    Debug.Print Split("VB_23476_Val.xls", "_")(1)
    ' Печатает 987
    Debug.Print Split("VV_987_Val.txt", "_")(1)
    ' Печатает 12223
    Debug.Print Split("ABBZA_12223_Val.doc", "_")(1)

End Sub

В реальном мире вы обычно читаете такие строки из разных ячеек. Допустим, эти имена файлов хранятся в ячейках от А1 до А3. Мы немного изменим приведенный выше код:

Sub ChitatNomera()

    Dim c As Range
    For Each c In Range("A1:A3")
        ' Разделите каждый элемент по мере его прочтения
        Debug.Print Split(c, "_")(1)
    Next c

End Sub

Пример 2: диапазон IP-адресов

Пример здесь взят из вопроса на веб-сайте StackOverflow.

У пользователя есть строка с IP-адресом в формате «BE-ABCDDD-DDS 172.16.23.3».

Он хочет, чтобы IP в диапазоне от 172,16 до 172,31 был действительным. Так например:

  • «BE-ABCDDD-DDS 172.16.23.3» действителен
  • «BE-ABCDDD-DDS 172.25.23.3» действителен
  • «BE-ABCDDED-DDS 172.14.23.3» не действителен
  • «BE-ABCDDDZZ-DDS 172.32.23.3» не действителен

Вот как бы я это сделал. Сначала я разбил строку по периодам. Число, которое мы ищем, находится между первым и вторым периодом. Поэтому это второй пункт. Когда мы разделяем строку, она помещается на первую позицию в массиве (помните, что массив начинается с нулевой позиции).

Полученный массив будет выглядеть так:

0 1 2 3
BE-ABCDDD-DDS 172 31 23 3

Код ниже показывает, как это сделать.

Sub IPAdd()

    ' Проверьте номер, чтобы проверить разные IP-адреса
    Dim s1 As String: s1 = "BE-ABCDDD-DDS 172.31.23.3"

    ' Разбить строку, используя символ точки
    Dim num As Long
    num = Split(s1, ".")(1)

    ' Проверьте правильность номера
    Debug.Print num >= 16 And num <= 31

End Sub

Пример 3. Проверьте правильность имени файла

В этом последнем примере мы хотим проверить правильность имени файла. Есть три правила.

  1. Должно заканчиваться на .pdf
  2. Он должен содержать АА
  3. Он должен содержать 1234 после А

В следующих таблицах показаны некоторые допустимые и недействительные элементы:

Имя файла Статус
AA1234.pdf Действителен
AA_ljgslf_1234.pdf Действителен
AA1234.pdf1 Недействительно — не заканчивается на .pdf
1234 AA.pdf Недействительно — АА не до 1234
12_AA_1234_NM.pdf Действителен

Сначала мы сделаем это, используя функции InStr и Right.

Sub IspInstr()

    Dim f As String: f = "AA_1234_(5).pdf"

    ' Сначала найдите АА, так как 1234 должен идти после
    Dim lPos As Long: lPos = InStr(f, "AA")
    ' Ищите 1234 и убедитесь, что последние четыре символа - .pdf
    Debug.Print InStr(lPos, f, "1234") > 0 And Right(f, 4) = ".pdf"

End Sub

Этот код очень грязный. К счастью для нас, у VBA есть Сравнение с шаблоном. Мы можем проверить шаблон строки без необходимости искать элементы и позиции и т.д. Мы используем оператор Like в VBA для сопоставления с шаблоном. Пример ниже показывает, как это сделать.

Sub IspSravnenie()

    Dim f As String: f = "AA_1234_(5).pdf"

    ' Определить шаблон
    Dim pattern As String: pattern = "*AA*1234*.pdf"
    ' Проверьте каждый элемент по шаблону
    Debug.Print f Like pattern   ' ИСТИНА

End Sub

В приведенном выше примере звездочка в шаблоне относится к любому количеству символов.

Давайте разберем этот паттерн * AA * 1234 * .pdf

*- любая группа символов
AA — точные символы AА

*- любая группа символов
1234 — точные символы 1234

*- любая группа символов
.pdf — точные символы .pdf

Чтобы показать, что это работает правильно, давайте попробуем это на всех именах примеров в таблице.

Sub IspSravnenieTest()

    ' Создать коллекцию имен файлов
    Dim coll As New Collection
    coll.Add "AA1234.pdf"
    coll.Add "AA_ljgslf_1234.pdf"
    coll.Add "AA1234.pdf1"
    coll.Add "1234 AA.pdf"
    coll.Add "12_AA_1234_NM.pdf"

    ' Определить шаблон
    Dim pattern As String: pattern = "*AA*1234*.pdf"

    ' Проверьте каждый элемент по шаблону
    Dim f As Variant
    For Each f In coll
        Debug.Print f Like pattern
    Next f

End Sub

На выходе:

ИСТИНА
ИСТИНА
ЛОЖЬ
ЛОЖЬ
ИСТИНА

Чтобы узнать больше о сопоставлении с шаблоном и ключевом слове Like, ознакомьтесь с этой публикацией.

Заключение

InStr и InStrRev действительно полезны только для простых задач, таких как проверка наличия текста в строке.

Left, Right и Mid полезны, когда положение текста всегда одинаково.

Функция Split — лучший способ извлечь переменную строку.

При попытке проверить формат строки, которая не является фиксированной по размеру, ключевое слово Like (т.е. Сопоставление с образцом) обычно обеспечивает более простое решение.

Главная » Функции VBA »

28 Апрель 2011              351421 просмотров

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

Статья помогла? Сделай твит, поделись ссылкой с друзьями!

В этой статье разберем работу со строками в 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

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

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

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

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

Как получить из строки только буквы в Excel

В настоящее время такой встроенной функции нет, поэтому придется писать пользовательскую функцию на VBA

Вот небольшой код для пользовательской функции Excel, которая может вытаскивать из строки состоящей из цифр, букв и символов только буквы.

Public Function GetText(txt As String) As String
    Dim m As String, s As String
    For i = 1 To Len(txt)
        m = Mid(txt, i, 1)
        If m Like "[A-Za-zА-Яа-яЁё]" Then s = s & m
    Next i
    GetText = s
End Function

Как пользоваться?

Открываем редактор VBA в Excel (Alt+F11), или правой кнопкой по листу и выбираем пункт «Исходный текст».

Создаем новый модуль → Insert → Module

Переключаемся на российскую раскладку клавиатуры, копируем код, указанный выше и вставляем в модуль

Далее в нужной ячейке, где необходимо вывести только буквы, прописываем формулу:

=GetText(A1)

и протягиваем ее вниз

Как получить из строки только буквы в Excel - пользовательская функция

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

    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)

    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
    ().

В разделе на вопрос Люди,объясните подробно,пожалуйста,что значит в Паскале функция ord(x) и ей обратная chr(x) ? заданный автором Nick Brown
лучший ответ это Есть специальная таблица символов (расширенного кода ASCII, когда каждому символу принадлежит числовое значение, всего в таблице имеется 255 значений, то есть каждому символу присвоено число,
chr(0..254) преобразует число (один байт) в символ которому принадлежит данное число, например chr(71) результатом будет буква «G», так же нажатие клавиш на клавиатуре выдаёт свой код вот как раз этот код при постановке в данный оператор и выдаст результатом какая клавиша нажата, это я к примеру. А вот оператор ORD(x) делает данный процесс в обратном порядке.
Задаём значение символ и получаем число от 0 до 254 (один байт)
например ORD(«G») даст нам результат 71 (в десятичном формате)
Вот вроде и всё !!!

Ответ от Katyonachik
[новичек]
Все просто, на самом деле)
Орд («Х») — вернет код символа Х из таблицы АСКИИ.
Результатом обратной ей функции будет символ, который соответствует введенному коду (от которого берется функция) из той же таблицы АСКИИ.

Ответ от Jurii
[гуру]
Это не взаимообратные функции!
Функция Ord возвращает порядковый номер значения перечислимого типа.
Счёт начинается с ноля.
Для типа byte функция вернёт собственно значение — порядковый номер совпадает со значением.
Для типа char функция вернёт порядковый номер символа, который (число случайно) совпадает с ASCII кодом.
Функция chr возвращает символ с заданным кодом в ASCII.
Вывод: Просто, в отношении символьных значений, они действительно работают как обратные друг другу.. .
Поэтому можно сказать, что функция ord обратная функции chr, но не наоборот — функция chr не является обратной для функции ord, т. к. область применения функции ord не ограничивается работой с символами!

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

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

Синтаксис

variablename = «string»

Примеры

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

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

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

InStr

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

Синтаксис

InStr(string1,string2[,compare])

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

  • Пуск — необязательный параметр. Указывает начальную позицию для поиска. Поиск начинается с первой позиции слева направо.

пример

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

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

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

InStrRev

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

Синтаксис

InStrRev(string1,string2[,start,])

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

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

пример

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

Private Sub Constant_demo_Click()
var = «Microsoft VBScript»
msgbox(«Line 1: » & InStrRev(var,»s»,10))
msgbox(«Line 2: » & InStrRev(var,»s»,7))
msgbox(«Line 3: » & InStrRev(var,»f»,-1,1))
msgbox(«Line 4: » & InStrRev(var,»t»,5))
msgbox(«Line 5: » & InStrRev(var,»i»,7))
msgbox(«Line 6: » & InStrRev(var,»i»,7))
msgbox(«Line 7: » & InStrRev(var,»VB»,1))
End Sub

После выполнения вышеуказанного скрипта он производит следующий результат.

Line 1: 6
Line 2: 6
Line 3: 8
Line 4: 0
Line 5: 2
Line 6: 2
Line 7: 0

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

LCASE

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

Синтаксис

Lcase(String)

пример

Private Sub Constant_demo_Click()
var = «Microsoft VBScript»
msgbox(«Line 1: » & LCase(var))
var = «MS VBSCRIPT»
msgbox(«Line 2: » & LCase(var))
var = «microsoft»
msgbox(«Line 3: » & LCase(var))
End Sub

Line 1: microsoft vbscript
Line 2: ms vbscript
Line 3: microsoft

Возвращает нижний регистр указанной строки.

UCase

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

Синтаксис

UCase(String)

пример

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

Private Sub Constant_demo_Click()
var = «Microsoft VBScript»
msgbox(«Line 1: » & UCase(var))
var = «MS VBSCRIPT»
msgbox(«Line 2: » & UCase(var))
var = «microsoft»
msgbox(«Line 3: » & UCase(var))
End Sub

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

Line 1: MICROSOFT VBSCRIPT
Line 2: MS VBSCRIPT
Line 3: MICROSOFT

Возвращает верхний регистр указанной строки.

Left

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

Синтаксис

Left(String, Length)

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

  • String — обязательный параметр. Строка ввода, из которой указанное число символов должно быть возвращено с левой стороны.
  • Длина — требуемый параметр. Целое число, определяющее количество возвращаемых символов.

пример

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

Private Sub Constant_demo_Click()
Dim var as Variant
var = «Microsoft VBScript»
msgbox(«Line 1: » & Left(var,2))
var = «MS VBSCRIPT»
msgbox(«Line 2: » & Left(var,5))
var = «microsoft»
msgbox(«Line 3: » & Left(var,9))
End Sub

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

Line 1: Mi
Line 2: MS VB
Line 3: microsoft

Возвращает определенное количество символов с левой стороны строки.

Right

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

Синтаксис

Right(String, Length)

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

  • String — обязательный параметр. Строка ввода, из которой указанное число символов должно быть возвращено с правой стороны.
  • Длина — требуемый параметр. Целое число, которое задает количество возвращаемых символов.

пример

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

Private Sub Constant_demo_Click()
var = «Microsoft VBScript»
msgbox(«Line 1: » & Right(var,2))
var = «MS VBSCRIPT»
msgbox(«Line 2: » & Right(var,5))
var = «microsoft»
msgbox(«Line 3: » & Right(var,9))
End Sub

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

Line 1: pt
Line 2: CRIPT
Line 3: microsoft

Возвращает определенное количество символов с правой стороны строки.

Mid

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

Синтаксис

Mid(String,start[,Length])

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

  • String — обязательный параметр. Строка ввода, из которой задано количество символов, которые нужно вернуть.
  • Начало — требуемый параметр. Целое число, определяющее начальную позицию строки.
  • Длина — необязательный параметр. Целое число, определяющее количество возвращаемых символов.

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

Private Sub Constant_demo_Click()
Dim var as Variant
var = «Microsoft VBScript»
msgbox(«Line 1: » & Mid(var,2))
msgbox(«Line 2: » & Mid(var,2,5))
msgbox(«Line 3: » & Mid(var,5,7))
End Sub

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

Line 1: icrosoft VBScript
Line 2: icros
Line 3: osoft V

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

LTrim

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

Синтаксис

LTrim(String)

пример

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

Private Sub Constant_demo_Click()
Dim var as Variant
var = » Microsoft VBScript»
msgbox «After Ltrim: » & LTrim(var)
End Sub

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

After Ltrim: Microsoft VBScript

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

RTrim

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

Синтаксис

RTrim(String)

пример

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

Private Sub Constant_demo_Click()
Dim var as Variant
var = «Microsoft VBScript »
msgbox(«After Rtrim: » & RTrim(var))
End Sub

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

After Rtrim: Microsoft VBScript

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

Trim

Функция Trim удаляет как ведущее, так и конечное пустое пространство данной входной строки.

Синтаксис

Trim(String)

пример

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

Private Sub Constant_demo_Click()
var = «Microsoft VBScript»
var = » Microsoft VBScript »
msgbox («After Trim: » & Trim(var))
End Sub

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

After trim: Microsoft VBScript

Возвращает строковое значение после удаления как верхнего, так и конечного пробелов.

Len

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

Синтаксис

Len(String)

пример

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

Private Sub Constant_demo_Click()
Dim var1 as Variant
Dim var2 as Variant
var1 =»Microsoft VBScript»
msgbox(«Length of var1 is: » & Len(var1))
var2 = » Microsoft VBScript »
msgbox («Length of var2 is: » & Len(var2))
End Sub

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

Length of var1 is: 18
Length of var2 is: 36

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

Replace

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

Синтаксис

Replace(string,find,replacewith[,start[,count[,compare]]])

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

  • String — обязательный параметр. Строка ввода, которую нужно искать для замены.
  • Find — требуемый параметр. Часть строки, которая будет заменена.
  • Replacewith — обязательный параметр. Строка замены, которая будет заменена на параметр find.
  • Start — необязательный параметр. Задает начальную позицию, из которой нужно искать и заменять строку. Значение по умолчанию — 1.
  • Count — необязательный параметр. Указывает количество раз, которое должна выполняться замена.
  • Compare — Необязательный параметр. Указывает метод сравнения, который будет использоваться. Значение по умолчанию — 0.
  • 0 = vbBinaryCompare — выполняет двоичное сравнение
  • 1 = vbTextCompare — выполняет текстовое сравнение

пример

Private Sub Constant_demo_Click()
Dim var as Variant
var = «This is VBScript Programming»
«VBScript to be replaced by MS VBScript
msgbox(«Line 1: » & Replace(var,»VBScript»,»MS VBScript»))
«VB to be replaced by vb
msgbox(«Line 2: » & Replace(var,»VB»,»vb»))
«»is» replaced by ##
msgbox(«Line 3: » & Replace(var,»is»,»##»))
«»is» replaced by ## ignores the characters before the first occurence
msgbox(«Line 4: » & Replace(var,»is»,»##»,5))
«»s» is replaced by ## for the next 2 occurences.
msgbox(«Line 5: » & Replace(var,»s»,»##»,1,2))
«»r» is replaced by ## for all occurences textual comparison.
msgbox(«Line 6: » & Replace(var,»r»,»##»,1,-1,1))
«»t» is replaced by ## for all occurences Binary comparison
msgbox(«Line 7: » & Replace(var,»t»,»##»,1,-1,0))
End Sub

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

Line 1: This is MS VBScript Programming
Line 2: This is vbScript Programming
Line 3: Th## ## VBScript Programming
Line 4: ## VBScript Programming
Line 5: Thi## i## VBScript Programming
Line 6: This is VBSc##ipt P##og##amming
Line 7: This is VBScrip## Programming

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

Space

Функция Space заполняет строку конкретным количеством пробелов.

Синтаксис

space(number)

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

Номер — требуемый параметр. Количество пробелов, которые мы хотим добавить к данной строке.

пример

Private Sub Constant_demo_Click()
Dim var1 as Variant
var1 = «Microsoft»
Dim var2 as Variant
var2 = «VBScript»
msgbox(var1 & Space(2)& var2)
End Sub

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

Microsoft VBScript

Заполняет строку указанным количеством пробелов.

StrComp

Функция StrComp возвращает целочисленное значение после сравнения двух заданных строк. Он может возвращать любое из трех значений -1, 0 или 1 на основе входных строк для сравнения.

  • Если String1 меньше String2, то StrComp возвращает -1
  • Если String1 равно String2, то StrComp возвращает 0
  • Если String1 больше String2, то StrComp возвращает 1

Синтаксис

StrComp(string1,string2[,compare])

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

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

пример

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

Private Sub Constant_demo_Click()
Dim var1 as Variant
msgbox(«Line 1:» & StrComp(«Microsoft»,»Microsoft»))
msgbox(«Line 2:» &StrComp(«Microsoft»,»MICROSOFT»))
msgbox(«Line 3:» &StrComp(«Microsoft»,»MiCrOsOfT»))
msgbox(«Line 4:» &StrComp(«Microsoft»,»MiCrOsOfT»,1))
msgbox(«Line 5:» &StrComp(«Microsoft»,»MiCrOsOfT»,0))
End Sub

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

Line 1:0
Line 2:1
Line 3:1
Line 4:0
Line 5:1

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

String

Функция String заполняет строку указанным символом для указанного количества раз.

Синтаксис

String(number,character)

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

  • Номер — требуемый параметр. Целочисленное значение, которое будет повторяться в течение определенного количества раз против параметра символа.
  • Символ — требуемый параметр. Значение символа, которое должно повторяться определенное количество раз.

пример

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

Private Sub Constant_demo_Click()
msgbox(«Line 1:» & String(3,»$»))
msgbox(«Line 2:» & String(4,»*»))
msgbox(«Line 3:» & String(5,100))
msgbox(«Line 4:» & String(6,»ABCDE»))
End Sub

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

Chr

Функция Chr

Chr(CharCode)
Chr$(CharCode)
ChrB(CharCode)
ChrW(CharCode)

Функция Chr
(Ch
aracter
)позволяет получить символ по значению его числового кода ANSI или Unicode

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

Функции Chr
, ChrB
, ChrW
возвращают значение субтипа String типа Variant , содержащее символ, соответствующий указанному коду символа ANSI или Unicode. Функции Chr$
, ChrB$
, ChrW$
возвращают соответственно значение типа String

Примечание

Chr
и Chr$
возвращают символ по его кодировке в стандарте ANSI
ChrB
и ChrB$
возвращают однобайтовую
строку
ChrW
возвращает символ Unicode, однако в системах, не поддерживающих Unicode, ее поведение аналогично Chr

Использование в параметре CharCode
значения больше, чем 255, генерирует ошибки стадии выполнения 5: Invalid procedure call or argument или 6: Overflow

Параметры

CharCode Обязательный аргумент является значением типа Long , определяющим символ. Обычно, функция Chr
применяется при вставке в текстовые строки непечатных символов(возврат каретки, перевод строки, табулятор и т.д.). Коды 0-31 соответствуют стандартным управляющим символам ASCII. Например, Chr
(10) возвращает символ перевода строки
Пример

Dim retval
retval = Chr
(65)
Debug.Print retval » возвращается A

Категория

Итак, продолжаем наши уроки Паскаль для начинающих. В прошлом уроке мы разобрали , но там мы упомянули про символы, поэтому прежде чем глубоко изучать тип данных , мы узнаем о типе Char. Символьный тип данных Char
— тип данных, значениями которого являются одиночные символы. Данный тип может содержать всего один любой символ (Например: «*», «/», «.», «!» и другие). Каждый такой символ занимает 8 бит памяти, всего существует 256 восьмибитовых символов. Все символы, используемые символьным типом Char записаны в таблице символов ASCII (American Standart Code for Information Interchange) или Американский стандарт кода для обмена информацией.

Символьные константы заключаются в апострофы, например «.», «*», «7», «s». Также символьную константу можно записать с помощью символа — «решетки», например #185 — выведет символ под номером 185 из таблицы ASCII (это символ «№»).

К символьному типу применимы 5 функций: Ord, Chr, Pred, Succ и Upcase.

Функция Ord
преобразовывает символ в её числовой код из таблицы ASCII
. Например для символа «№» она возвратит значение 185. Функция Chr обратна функции Ord. Функция Chr
преобразует числовой код символа в сам символ, например, если взять числовой код 64, то функция Chr (64) возвратит символ «@».

Пример программы на Паскаль с использованием функции Ord:

Begin //Начало программы

writeln (ord (x)); //Вывод номера в таблице ASCII
end. //Конец программы

Пример программы на Паскаль с использованием функции Chr:

Var x:integer; // Описание переменных (x — целочисленный тип)
Begin //Начало программы
readln (x); //Считывание переменной
writeln (chr (x)); //Вывод символа по номеру в таблице ASCII
end. //Конец программы

Функция Pred
возвращает значение предыдущего символа из таблицы ASCII, например для символа «P» (Pred (P)) эта функция возвратит символ «O». Функция Succ
обратная функции Pred. Для символа «P» функция Succ (P) возвратит символ «Q», то есть следующий символ из вышеописанной таблицы ASCII.

Пример программы на Паскаль с использованием функций Pred и Succ:

Var x:char; // Описание переменных (x — символьный тип)
Begin //Начало программы
readln (x); //Считывание переменной
writeln (pred (x)); //Вывод предыдущего символа в таблице ASCII
writeln (succ (x)); //Вывод следующего символа в таблице ASCII
end. //Конец программы

Функция UpCase
применима только для строчных букв английского алфавита. Данная функция преобразует строчные английские буквы в заглавные.

Пример программы на Паскаль с использованием функции UpCase:

Приложение к уроку — таблицы символов ASCII:

На сегодня урок окончен. Помните, что программирование на паскале
просто и является основой для многих языков программирования.

Loading...Loading…

Функция InStr

​Смотрите также​​ и вот так​ 0 ?​ «!» из всех​: А может отдаться​ ребята и напишут,​ макроса, нашлось слово,​ значений из столбца​:​ между ними. Поэтому​ помощью vba же,​ с элементами массива:​ + 1 Loop​ не понял, как​Start​Справочник разработчика​Option Compare​Примечание:​ вот «попал»​If InStr(k, aStringArray(i​ строк.​

​ на откуп рекордеру?​​ и протестируют, и​​ или даже лучше​​ А​​Писал бы сразу​ я в 99%​ это сделать оказалось​

​Авторские программы, библиотеки,​

​ While VBA.Mid(Cells(1, 1).Value,​

​ делать. Нужно, что​ ​>​​в раскрывающемся списке​​.​​ Мы стараемся как можно​​ikki​​ — 1), «!»)​​Sub Print() Dim​​Cells.Find(What:=»т*к», After…​​ готовый код мне​

​ слова (записанные например​​for I=1 to​​ — все в​

​ случаев использую ПОИСК.​

​ значительно проще, аккуратней​

​ надстройки и шаблоны​

​ ST + LN,​ бы в экселе​String2​ рядом с полем​vbBinaryCompare​ оперативнее обеспечивать вас​: после последнего «!»​​ <> 0 ThenСмысл​​ aStringArray(), aWordStringArray() As​корректно работает.​ напишут. И ещё​​ через запятую), введенные​​ CInt(Sheets(1).Cells(Rows.Count, 3).End(xlUp).Row) +​​ сад!​​По файлу еще​

​ и красивей​

​ («И для любителей​ 1) <> «​ в ячейке А1​

​0​

​Поиск​0​

​ актуальными справочными материалами​

​ отрабатывает (в том​ данного условия, на​ String Dim aString​​New​​ скажут: «Да, не​ в другую ячейку.​ 1 »цикл начинаем​​SkyPro​​ вариант​Казанский​​ экстрима»)​​ » With Cells(1,​​ выполнялся поиск слов,​Параметры​и введите одно​Выполняется двоичное сравнение.​ на вашем языке.​

​ числе) строка​​ мой взгляд, заключется​​ As String Dim​: т.е. ты хочешь​ волнуйся ты так,​ Как делать -​​ с 1, т.к.​

​: VictorM, если вы​

​200?’200px’:»+(this.scrollHeight+5)+’px’);»>=—ЕЧИСЛО(ПОИСК(B$1;$A2))​​: В принципе можно​​Или работать с​ 1).Characters(Start:=ST, Length:=LN).Font .Color​

​ записанных через запятую​

​Элемент​

​ или несколько слов​

​vbTextCompare​

​ Эта страница переведена​

​32​ в следующем.​​ aQuantitySymbols, aQuantityExclam, aQuantityExclamMax​​ сказать, что твой​

​ всё прекрасно работает​

​ мне не вспомнить.​

​ номера сток в​

​ хотите доп столбец​

​VictorM​

​ и формулой одной​

​ указателями, чтобы копировать​

​ = RGB(0, 0,​

​ в столбец А2,​Описание​ в поле поиска.​1​ автоматически, поэтому ее​

​, переменная​

​Если функция InStr(k,​

​ As Integer Dim​

​ код не находит​

​ и со знаком​

​Казанский​

​ Excel »начинается с​

​ и поиск пустой​

​: Да, действительно, так​

​ для всех:​

​ символ в другую​

​ 255) .Bold =​

​ а результат, и​

​Start​

​В данном примере функция​

​Выполняется текстовое сравнение.​

​ текст может содержать​

​k​

​ aStringArray(i — 1),​​ i, j, k,​​ слово «телекс» на​ вопроса и со​: Функция Instr​​ 1. Далее идет​​ строки, то луче​ удобнее, т.к. вполне​=ПОДСТАВИТЬ(ПРАВСИМВ(ЛЕВСИМВ(«№»&ПОДСТАВИТЬ($A$1;»№»;ПОВТОР(«№»;999));999*СТРОКА(A2));999);»№»;»»)​ строку или переменную​ True End With​

Примеры

​ найденные слова, с​Необязательный. Числовое выражение, которое​​InStr​​vbDatabaseCompare​​ неточности и грамматические​становится больше, чем​ «!») возвращает не​ m, l As​ листе?​​ звёздочкой, т.е. с​​BeaRRR​ выражение, »которое показывает​ уж отдельную формулу​​ возможно, что потребуется​​СТРОКА(A2) — это​

​ другого типа:​

​ End SubМожно сделать​​ числом их повторений​​ задает первую позицию​используется для получения​2​ ошибки. Для нас​ длина строки и​ 0, то выполняем​​ Long ‘счетчики Dim​​Вот я сейчас​ любым символом подстановки».​

​: Да, функцию нашел,​ кол-во строк на​​ для него:​​ поиск и по​ номер вхождения. Если​Как написать функцию,​ что бы искало​

​ (если такое возможно)​

​ для каждого поиска.​​ позиции первого вхождения​​Только в Microsoft Office​ важно, чтобы эта​ цикл​ операторы после THEN,​ lLastRow As Long​ написал слово «телекс»​Я прав? Нафига​​ спасибо. но как​​ 1-м листе if​200?’200px’:»+(this.scrollHeight+5)+’px’);»>=—($A2=»»)​ другим символам.​ вытягиваете не по​

​ переворачивающую строку​ и не с​​ в искомом тексте,​

​ Если параметр опущен,​​ одной строки в​ Access 2007. Выполняется​ статья была вам​Do While​ иначе идем в​ Dim lLastColums As​ на листе, включил​ было создавать тему,​​ саму программу писать​​ instr(sheets(1).cells(I,2), sheets(1).cells(I,2)) <>​VictorM​​Спасибо.​​ строкам, а по​Как выделить числовую​ начала слова, а​

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

​ ELSE​
​ Long aQuantitySymbols =​ запись макроса и​ если вы даже​
​ все равно не​ 0 then ''тут​: Спасибо, то, что​
​VictorM​ столбцам, то замените​ часть текста? (в​ по части слова.​
​ третью, ячейку. (ещё​ позиции первого символа.​
​Dim SearchString, SearchChar, MyPos​ сведений из базы​ уделить пару секунд​ условия продолжения цикла.​
​Функция InStr(k, aStringArray(i​ 0 aQuantityExclamMax =​
​ ввёл строку поиска​ не успели столкнуться​
​ знаю. Не могли​ ищем строку из​
​ нужно.​: Это я начинаю​ на СТОЛБЕЦ(B1)​
​ коде строки 93-110).​Но это уже​ лучше бы было,​

support.office.com

Функция InStr

​В том случае, когда​
​SearchString ="XXpXXpXXPXXP" '​

​ данных.​​ и сообщить, помогла​​ так что даже​​ — 1), «!»)​​ 0 ‘Вычисляем кол-во​ «т*к», нажал «Найти​ с проблемой?​​ бы подсказать?​​ столбца А, в​Цитата​ только сейчас понимать,​На всякий случай​pashulka​ на самостоятельную разработку​ если б они​ значение параметра​ String to search​Возвращаемые значения​ ли она вам,​

​ замена​

​ возвращает 0 только​​ строк с данными​​ далее», макрос нашёл​Sub Макрос1()​Казанский​ подстроке В sheets(1).cells(I,3)​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Думаю, тут есть варианты​ ни разу не​ UDF Function ТриНомера(ByVal​: Ёще один вариант,​BeaRRR​ выделялись (ну или​Start​

​ in.​

​Если​ с помощью кнопок​на в данном случае​ в случае, если​

​ и вносим текст​

​ ячейку со словом​ ​Dim rFoundRng As​
​: С Вас -​​ = sheets(1).cells(I,1) &​ ​ и короче, но​
​ приходилось применять ни​​ x) Dim i&​ ​ который, впрочем, уже​
​: вау! шикарно!! ОГРОМНОЕ​​ подчеркивались) каким ни​ ​равно Null, возникает​
​SearchChar = «P»​​Возвращаемое значение​ ​ внизу страницы. Для​
​ не спасает.​​ символа «!» нет​ ​ каждой строки в​
​ «телекс». Вот код​​ Range​​ файл XLS: исходный​ ​ «, » end​ для этого нужно​
​ то, ни другое.​​ On Error Resume​​ упоминался ранее …​ ​ СПАСИБО!)​

​ будь образом в​

​ ошибка.​ ​ ‘ Search for​
​строка1 является пустой​ ​ удобства также приводим​пс. для реальной​ в строке и​ массив aStringArray lLastRow​Sub Макрос2()​Dim sTextToSearch As​​ данные и в​ if next i​​ быть Мастером Экселя​​Про НАЙТИ почитал,​ Next ReDim t(1​​Private Sub Test()​​А что там​​ первой ячейке…что бы​Параметр​​ «P».​
​0​ ​ ссылку на оригинал​ работы удобнее такой​
​ в моем примере​ ​ = Cells(Rows.Count, 1).End(xlUp).Row​
​Cells.Find(What:=»т*к», After:=ActiveCell, LookIn:=xlFormulas,​ ​ String​ каком виде надо​​Апострофф​​Не скромничайте )​​ а вот про​ To 3) x​​ Dim strX As​ насчёт поиска по​​ их сразу видно​​Start​’ A textual​​строка1 равна NULL​

​ (на английском языке).​

​ способ для нахождения​​ почему-то данное условие​​ MsgBox («Кол-во заполненных​

​ LookAt:= _​ ​sTextToSearch = «т*к»​ ​ получить результат.​
​: Sub Search() Dim​ ​Все просто супер.​ ​ ПОИСК и не​ = Split(x, «№»)​​ String, arrX() As​
​ части слова? мне​ ​ было. но не​ ​является обязательным, если​
​ comparison starting at​ ​NULL​ ​Возвращает значение типа​
​ количества определенного символа​ ​ не срабатывает. Вот​ ​ строк = «​xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,​Set rFoundRng =​BeaRRR​

​ ra As Long,​ ​ И дело вовсе​ подумал даже, что​ For i =​ Byte, c As​ бы очень и​ знаю, возможно ли​ задан параметр​ position 4. Returns​строка2 является пустой​Variant​ в строке:​ я и пытаюсь​ & lLastRow) ReDim​ MatchCase:=False _​ Cells.Find(sTextToSearch, , xlFormulas,​​: да без разницы,​​ rb As Long​ не в длине​ его можно применить.​ 1 To 3​ Variant strX =​​ очень пригодилось это...​​ такое) По сему​Compare​ 6.​начало​(​​n=len(s)-len(Replace(s, sSymbol, ""))​​ разобраться...​ aStringArray(lLastRow - 1)​​, SearchFormat:=False).Activate​​ xlPart)​ в каком виде​ ​ Columns(3).ClearContents For ra​
​ (кол-ве знаков) в​

Поиск подстроки в строке

​Спасибо, будем учить​​ t(i) = Val(x(i))​ » Private Sub​ как записать?​ вкладываю файл-пример. Мне​String1​MyPos = Instr(4,​строка2 равна NULL​Long​Апострофф​Укажите, пожалуйста, к​ For i =​End Sub​If Not rFoundRng​ результат в принципе)​ = 1 To​ формуле.​ матчасть​ Next ТриНомера =​ Test2() Dim strX$,​Alex77755​ нужен сам макрос,​Обязательный. Строковое выражение,в котором​ SearchString, SearchChar, 1)​NULL​), определяющее положение первого​: Спасибо, Уважаемые Diskretor​ каким переменным относится​ 1 To lLastRow​Так что и​ Is Nothing Then​ мне даже в​ 65536 If Cells(ra,​

​Думаю, что тут​​RAN​ t End FunctionВводить​ arrX() As Byte,​: Не охота снова​ сама программа, ибо​ ведется поиск​

​’ A binary​​строка2 не найдена​ вхождения одной строки​ и ikki. Очень​ ваш комментарий, а​ aQuantityExclam = 0​

​ мой код и​​MsgBox «Найдено: «​ голову не идет​
​ 1) = «»​ дело в понимании​: SkyPro, можно и​ как формулу массива,​ i& strX =​ создавать файл для​ писать их я​String2​ comparison starting at​0​ в другую.​ помогли. Разобрался в​ то я не​ aStringArray(i — 1)​
​ записанный рекордером -​ & rFoundRng, 64,​ ничего %)​ Then Exit For​ процесса.​ не прибедняться.​ выделив 3 соседние​ «​ проверки.​ не умею. Заранее​Обязательный. Отыскиваемое строковое выражение​ position 1. Returns​строка2 найдена в строке1​Некоторые примеры​ чем косяк =).​ догоняю…​ = Cells(i, 1)​ оба находят слово​ «Поиск»​ну пусть, например,​ For rb =​До чего, кстати,​Формулы вполне на​ ячейки и нажимая​iDeus​Да и к​ благодарю​Compare​ 9.​Позиция найденного соответствия​Синтаксис​ И за код​Piton777​ ‘Вычисляем максимальную длину​ «телекс» по поиску​Else​​ окно выдаст с​
​ 1 To 65536​ мне еще учиться​ уровне…​ Ctrl+Shift+Enter.​
​: Здравствуйте, подскажите пожалуйста,​ тому же изначально​Alex77755​Необязательный. Задает тип сравнения​MyPos = Instr(1,​начало > строка2​Instr​ спасибо.​: Смысл понятен. И​ строки, и максимальное​ «т*к»​MsgBox «На листе​ найденными словами…..или в​ If Cells(rb, 2)​ и учиться)​SkyPro​VictorM​ как можно решить​
​ говорил​: В принципе возможно​

​ для строк.​​ SearchString, SearchChar, 0)​0​
​(​Есть еще 1​ его писал явно​ кол-во восклицательных знаков​Юрий М​ ничего не найдено!»,​

​ исходном тексте их​​ = «» Then​Спасибо всем за​: Но я ведь​
​: Здравствуйте, уважаемые!​ такую задачу:​На словах: добавить​
​ очень многое, но​Если значение параметра​’ Comparison is​
​Замечания​[​

​ вопрос. За VBA​​ человек, знающий С.​ в каждой строке​: А вот так:​ 48, «Поиск»​ выделит, если так​ Exit For If​ участие и науку.​

​ прав был​​Собственно, вопрос в​В таблице Excel​ ещё один цикл​ ты должен отдавать​
​Compare​ binary by default​Функция​начало,​
​ сел только пару​1) Проблема в​ If (Len(aStringArray(i -​Sub Макрос3()​
​Exit Sub​ можно (последнее лучше)​ InStr(1, Cells(rb, 2),​
​Kotaaa​У Александра формула​ названии темы. Нужно​
​ есть столбец со​ Do-Loop.​ себе отчёт, что​

CyberForum.ru

Цикл по символам строки

​равно Null, возникает​​’ (last argument​InStrB​]​ дней назад. Иногда,​ строке 29 (последний​ 1)) > aQuantitySymbols)​Cells.Find(What:=»т*к», After:=ActiveCell, LookIn:=xlFormulas,​End If​
​исходные данные не​ Cells(ra, 1), vbTextCompare)​: Всем хорошего дня!​

​ короче.​​ найти определенный символ​ строками вида:​

​Только смещать начало(ST)​​ в первом тексте​ ошибка.​ is omitted).​используется с байтовыми​строка1, строка2​ случайно, запускаю бесконечный​ «!» не будет​ Then aQuantitySymbols =​ LookAt:= _​End Sub​ важны — мне​

​ Then Cells(rb, 3)​​Пытаюсь решить такую​​Все равно спасибо.​​ в строке и​«ЭРТ №2 Такой-то​ влево до пробела​ нет слова «Бомба»​
​В том случае,​MyPos = Instr(SearchString,​ данными, содержащимися в​[​ цикл и VBA​
​ распознан; нулевого литерала​ Len(aStringArray(i — 1))​xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext,​Данный код находит​
​ нужен сам алгоритм​ = Cells(rb, 3)​ задачу. Если коротко,​ Я и сам​ если он есть,​
​ край, Такой-то район,​BeaRRR​
​BeaRRR​ когда параметр​ SearchChar) ‘ Returns​

​ строке. Функция​​, сравнение​ тупо зависает. Ctrl​ в бейсике нет).​
​ ‘Для проверки выводим​ MatchCase:=False _​ такие слова как:​ этот. что бы,​ & Cells(ra, 1)​ то ищу ключевые​ не ожидал, что​ то 1, если​ в/г ВоенныйГородок №​: Да если бы​

CyberForum.ru

Простой парсинг строки в Excel, поиск значения после символа

​: Мне важен сам​​Compare​ 9.​InStrB​
​]​ + Break не​Должно быть 2)​
​ сообщение о новом​, SearchFormat:=False).Activate​- тук​ как уже говорил,​ & «,» End​ (так называемые META​ выдам столько вариантов.​
​ нет — то​ 42 Кот 174​ я ещё умел​ алгоритм, сам макрос​опущен,тип сравнения определяется​MyPos = Instr(1,​
​возвращает позицию байта,​)​ помогает. не посоветуете​ Проблема в логике:​
​ макс значении кол-ва​End Sub​- так​ искал содержимое одной​ If Next rb​ Keywords) в наименованиях​
​VictorM​ 0.​

​ Здание контрольно-пропускного пункта​​ это делать… Я​ (прошу написать)) а​ установками оператора​ SearchString, «W») ‘​ а не позицию​Функция​ таблетку против этой​ даже если п.1​ символов MsgBox (aQuantitySymbols)​На листе два​- тампакс​ ячейки в другой​ Next ra End​ товаров.​: Уважаемые, а можно​Я вроде как​ (караулка)(встроенная) №174» без​ ноль почти в​ текст я поменяю​Option Compare​ Returns 0.​

​ знака первого вхождения​​InStr​ напасти? Как остановить​ сделать, последний «!»​

​ End If k​​ слова: Ток и​​- томск​​Заранее благодарю​ Sub​Подробнее. Есть столбик​ вопрос вдогонку, чтобы​ что-то сделал, написал​

​ кавычек.​​ программировании. И именно​​ потом. помогите пожалуйста​​Установки​InStr([Start,]String1,String2[,Compare])​ одной строки в​имеет следующие аргументы:​ макрос?​
​ в строке выполнит​ = 1 Do​ Телекс. Находится ток.​- телекс​Казанский​Kotaaa​ «А» с определенными​

​ уж все решить.​​200?’200px’:»+(this.scrollHeight+5)+’px’);»>=ЕСЛИ(НАЙТИ(«Ф»;A2);1;0)​Необходимо в три​ поэтому прошу помощи​
​Alex77755​
​Для параметра​InStrB([Start,]String1,String2[,Compare])​ другую.​Аргумент​Piton777​ первую часть if,​

​ While k <​Да ладно -​Юрий М​: Вам лень рисовать​: Спасибо! А что​ фразами (может быть​Сделал вывод единицы,​НО. Определяется только​ соседних ячейки той​ здесь.​: Вот так загоняешь​Compare​Функция​Использование функции InStr в​Описание​: не запускать бесконечный​

CyberForum.ru

Найти символ в строке (Функция ЕСЛИ)

​ и команды в​​ Len(aStringArray(i — 1))​
​ я сам вижу,​: Павел, что-то мне​ пример — мне​ за переменная «I»​ одно слово,может состоять​ если строка пустая​ символ в зависимости​ же строки, выдернуть​
​Alex77755​ в массив слова:​
​используются следующие установки:​
​InStr​ выражении.​начало​ цикл.​ else будут опущены.​ If InStr(k, aStringArray(i​ что и в​
​ показалось подозрительным: по​ тем более.​ здесь?​ из двух и​ (может быть и​
​ от регистра. Мне​ числа после первого,​: По большому счёту​
​Dim m() As​Константа​(​    Функцию​
​Необязательный аргумент. Числовое выражение,​

​а вообще кнопка​​3) Объявляйте Dim​​ - 1), "!")​
​ Word поиск не​
​ маске «т*к» слово​
​Выделить часть часть​

​Апострофф​​ более), короче столбик​
​ такое) вот так​ же нужно ,​
​ второго и третьего​

​ помощь это когда​​ String If InStr(1,​

​Значение​​In Str​
​InStr​ которое задает начальное​

​reset​​ правильно.​ <> 0 Then​:)

​ совсем так. Я​​ телекс не должно​:)
​ текста в ячейке​

​,​​ «А» со строками.​200?’200px’:»+(this.scrollHeight+5)+’px’);»>=СЧЁТЕСЛИ(A2;»»)​​ чтобы символ определялся​
​ символа «№» соответственно.​ делаешь сам и​ Cells(1, 2).Value, «,»)​Описание​ing) служит для поиска​:)

​можно использовать в​​ положение для каждого​на корпусе ещё​4) Для Instr​ aQuantityExclam = aQuantityExclam​ про подстановки. Только​ находиться. Вот если​ — ищите​Спасибо! Прикинул в​ И столбик «В»​Работает.​ вне зависимости о​Учитывая, что между​
​ тебе помогают.​ > 0 Then​
​vbUseCompareOption​

​ номера символа(номера байта​​ любых выражениях. Например,​ поиска. Если аргумент​ ни разу не​ пользуйтесь вот такой​ + 1 k​
​ хотел сказать, что​

​ бы «т*к*», то​​Characters​ уме сначала, что​ с наименованиями товаров​А вот в​ регистра.​
​ № и цифрой​Не смотря на​ m = Split(Replace(Cells(1,​-1​ для​
​ если требуется определить​ не задан, поиск​:)

​ подводила​​ логикой:​ = InStr(k, aStringArray(i​
​ корректнее было бы​ да. Штатный поиск​

​в сочетании с​​ будет происходить -​ (взятый из прайс-листа).​:)
​ понравившихся мне вариантах​И если такого​
​ может быть или​ это несоответствие я​ 2).Value, » «,​Сравнение выполняется с использованием​%)

​InStrB​​ позицию первой точки​ начинается с первого​Piton777​
​k = 0:​ — 1), «!»)​ выполнение поиска по​ именно так и​
​InStr​
​ коротко и логично.​
​ Нужно искать вхождение​ из постов №8​ символа нет, мне​
​ не быть пробел.​
​ показал как это​
​ «»), «,») Else​
​ установок для оператора​
​), с которого начинается​ (​
​ символа. Если аргумент​

​: Меня Ctrl +​​ aQuantityExclam = 0​​ + 1 MsgBox​
​ маске, например, для​ сработает. А Ваш​

​(можно в сочетании​​ И все работает!​ (точное соответствие фразы)​Код200?’200px’:»+(this.scrollHeight+5)+’px’);»>=СЧЁТЕСЛИ($A2;»*»&B$1&»*»)​ нужен 0, а​
​Я так понимаю,​ можно сделать.​ ReDim m(0): m(0)​Option Compare​
​ в заданной строке​.​начало​ Break всегда спасал​

​ Do k =​​ («Номер символа в​ слов токсин, такси,​ макрос нашёл и​ с моим ником).​Интересно, что Вы​ фразы из столбика​и №9​
​ у меня пишется​ необходимо 3 формулы,​И даже больше​ = Trim(Cells(1, 2).Value)​vbBinaryCompare​ образец поиска. Поиск​) в поле, которое​содержит значение NULL,​Ну попробуй​ InStr(k + 1,​ строке » &​ таксофон не «т*к»,​ слово «стук», хотя​
​vladk​ просто число 65536​ «А» в каждой​Код200?’200px’:»+(this.scrollHeight+5)+’px’);»>=—ЕЧИСЛО(ПОИСК(B$1;$A2))​ ошибка #ЗНАЧ!​ но никак не​

​ того: показал как​​ End IfА потом​:D
​0​ идет от указанной​ содержит IP-адрес (IPAddress),​:p

​ возникает ошибка. Если​​DoEvents​ aStringArray(i — 1),​ i & «​ а «т*к*». Т.е.​ не должен был.​: Подскажите, пожалуйста, можно​
​ поставили для цикла.​

​ из ячеек столбика​​не получается сделать.​Подскажите, пожалуйста, как​
​ получается сообразить, как​​ можно сделать выделение​ в цикле по​Выполняется побитовое сравнение​ позиции слева направо.​
​ можно использовать функцию​
​ задан аргумент​в цикл вставить?​ «!») If k​ равен » &​ после К любое​
​ Или я чего-то​ ли в маске​ Это реально ускоряет​
​ «В» и, если​Можно как-то это​ можно все это​
​ получить число неизвестной​ по началу слова.​

excelworld.ru

Поиск подстроки в строке — сравнение строк в VBA

​ всем словам ищешь(опять​​vbTextCompare​
​ Поиск вхождения одной​InStr​сравнение​Из полностью безопасных​ <> 0 Then​ k — 1)​
​ количество любых символов.​ не того?​ строки поиска (VBA)методом​ обработку?​ вхождение найдено, то​ победить?​ сделать.​ длинны после символа.​Там осталась самая​ же в цикле.​1​ строки в другую​для его поиска:​, аргумент​ способов знаю такие:​ aQuantityExclam = aQuantityExclam​ Else k =​ И ведь в​New​ Find​А как мне​ в столбик «С»,​Спасибо.​
​Скорее всего нужна​Excel 7-10 года,​
​ малость. на словах​
​ во вложенном)​
​Выполняется текстовое сравнение​
​ весьма часто используемая​
​InStr(1,[IPAddress],».»)​
​начало​
​1) Вставить в​
​ + 1 MsgBox​
​ Len(aStringArray(i — 1))​
​ командере именно так​: а по-моему, должно​
​использовать *,? для​ кнопку влепить на​
​ напротив ячейки, в​SkyPro​
​ другая формула, но​
​ Windows.​
​ я её рассказал.​Option Compare Text​
​vbDatabaseCompare​ операция. Нумерация символов​
​Функция​является обязательным.​ подозрительный цикл команду:​ «Номер символа в​ If aQuantityExclam >​ и происходит.​ )​ расширения вариантов поиска​ этот лист? Буду​
​ которой сейчас ищется​:​

​ это все что​​Апострофф​
​Как я говорю​ Option Explicit Sub​2​ всегда начинается с​InStr​строка1​DoEvents2) внимательно за​
​ строке » &​ aQuantityExclamMax Then aQuantityExclamMax​New​Вот ещё пример​ как в обычном​ вставлять во 2-ю​ совпадение — вписывать​200?’200px’:»+(this.scrollHeight+5)+’px’);»>=ЕСЛИ($A2=»»;1;СЧЁТЕСЛИ($A2;»*»&B$1&»*»))​ я смог придумать)​: Информация к размышлению​ своему внуку: включай​ QWERT() Dim R,​Только для Microsoft Access.​ единицы​проверяет каждое значение​Обязательный аргумент. Представляет собой​ этим следить и​ i & «​

​ = aQuantityExclam MsgBox​​: По-моему, я понял!​ поиска слова «телекс»​ поиске​ колонку наименования и​ эту фразу с​Это если долго​Спасибо.​ — MsgBox Val(Split(«ЭРТ​ голову(или доставай кошелёк)​ N, K Dim​ Сравнение выполняется с​Примечание​ в поле IPAddress​ строковое выражение, в​ успеть нажать Ctrl+Break,​ равен » &​ («На данный момент​Тут важную роль​sTextToSearch = «т???к»​Excel или Windows​ затем кнопку нажимать,​ «,» в конце.​

​ не думать.​​SkyPro​ №2 Такой-то край,​Четыре бокала пива​
​ m() As String​​ применением сведений из​
​В функции​ и возвращает позицию​ котором выполняется поиск.​ пока еще не​ k End If​
​ максимальное кол-во воскл​ играет аргумент LookAt,​А, чтобы найти​New​ чтобы в редактор​
​Ну скажем такой​RAN​:​ Такой-то район, в/г​ — смешно назвать​ If InStr(1, Cells(1,​ базы данных пользователя​InStr​ первой точки. Следовательно,​

​строка2​​ прошло секунды 3​

​ Loop Until k​

​ знаков равно «​ который может быть​ «стук» можно так​​: Может это поможет?​

​ не входить лишний​ вот пример:​: Сереж, на одном​200?’200px’:»+(this.scrollHeight+5)+’px’);»>=ЕСЛИОШИБКА(—(ПОИСК(«ф»;A2;1)>0);0)​ ВоенныйГородок № 42​​ это ценой!​​ 2).Value, «,») >​​Пример​​при очень длинных​ если значение первого​

​Обязательный аргумент. Искомое строковое​​ бесконечного цикла.​ = 0 If​ & aQuantityExclamMax) End​ либо xlPart, либо​sTextToSearch = «т?к»​vladk​ раз.​
​»А»​ из форумов (не​Код200?’200px’:»+(this.scrollHeight+5)+’px’);»>=ЕСЛИ(ЕОШ(ПОИСК(«ф»;A2;1));0;1)​
​ Кот 174 Здание​sku144​​ 0 Then m​​’ В данном примере​

CyberForum.ru

Банальный поиск подстроки в строке

​ строках при текстовом​​ октета IP-адреса равно​ выражение.​3) Внимательно писать​ aQuantityExclam > aQuantityExclamMax​ If End If​ xlWhole, т.е. искать​Т.е. Звёздочка (*)​: Эта тема про​Апострофф​механизм​ помню, на каком)​Код200?’200px’:»+(this.scrollHeight+5)+’px’);»>=—НЕ(ЕНД(ВПР(«*ф*»;A1;1;0)))​

​ контрольно-пропускного пункта (караулка)(встроенная)​​: Есть непустая строковая​

​ = Split(Replace(Cells(1, 2).Value,​​ функция InStr ‘​ методе сравнения, возможно​10.​сравнение​ циклы и не​ Then aQuantityExclamMax =​

​ Loop Next i​​ часть ячейки или​ заменяет любое количество​ другое.​:​механизм выключателя​

​ прозвучало​​Код200?’200px’:»+(this.scrollHeight+5)+’px’);»>=СЧЁТЕСЛИ(A2;»*ф*»)​ №174″, «№»)(1)) MsgBox​ переменная x, хочу​ » «, «»),​ возвращает позицию первого​ возникновение ошибки времени​
​, функция возвращает значение​Необязательный аргумент. Задает тип​ допускать такого. Предусматривать​ aQuantityExclam MsgBox «На​ End SubВопрос, почему​ ячейка целиком (галочка​
​ символов и в​Так как нет​Не по теме:​механизм переключателя​»Нормальные люди меряются,​VictorM​ Val(Split(«ЭРТ №2 Такой-то​
​ перебрать ее посимвольно​

​ «,») Else ReDim​​ появления ‘ одной​ исполнения Stack overflow.​ 3.​
​ сравнения строк. Если​ обязательный выход из​ данный момент максимальное​​ нижеприведенный кусок кода​​ снята или поставлена)​​ примере «т*к» буквы​​ ответов, то ,наверное,​Нет, просто мне лень​

CyberForum.ru

Как методом Find в VBA найти строку с использованием *,? как в обычном поиске Windows

​адаптер​​ у кого длиннее,​: Во как.​ край, Такой-то район,​ в цикле. Умеет​
​ m(0): m(0) =​ строки внутри другой​ Избежать этой ошибки​Можно использовать другие функции,​
​ аргумент​

​ него по условию.​​ кол-во воскл знаков​

​ ниразу не срабатывает,​​Так вот, если​ «т» и «к»​
​ такая возможность нереализвана​ каждый раз вспоминать​адаптер питания​ а формулисты -​Сразу три варианта​ в/г ВоенныйГородок №​ ли VBA как​
​ Trim(Cells(1, 2).Value) End​ строки Dim SearchString,​

​ можно, переведя исходную​​ использующие результат функции​сравнение​
​ Это хороший тон.​ равно » &​
​ если известно, что​ мы задаём критерий​
​ не обязательно должны​ в стандартных процедурах​
​ конструкции типа​
​рамка​ у кого короче.»​ формул!​

​ 42 Кот 174​​ в пайтоне запускать​

​ If For R​​ SearchChar, MyPos SearchString​ строку и образец​InStr​содержит значение NULL,​Из небезопасных:​ aQuantityExclamMax End If​ строки без «!»​ поиска «т*к», то​ быть «т» -​ VBA. Тогда, как​CInt(Sheets(1).Cells(Rows.Count, 3).End(xlUp).Row) + 1​выключатель двойной​Но короче -​СПАСИБО!​ Здание контрольно-пропускного пункта​ цикл по элементам​ = 0 To​ =»Русский_Проект» ‘ Исходная​ в один регистр​, для извлечения значения​ возникает ошибка. Если​1) Ctrl+Esc, «Приложения»,​

​ikki​ имеются, и в​ если xlPart -​ первой буквой в​ это можно сделать​

​Для ускорения обработки​
​»В»​ не есть лучше.​
​jakim​ (караулка)(встроенная) №174″, «№»)(2))​
​ строки?​
​ UBound(m) N =​ строка SearchChar =​ и перейдя на​
​ октета IP-адреса, который​ аргумент​
​ выбрать программу, снять​: должен срабатывать.​ каждой строке ограниченное​
​ то код ищет​
​ слове, а «к»​ оптимальным образом.​ (если в этом​
​Berker механизм выключателя​
​ Оставь это для​
​: Может так?​

​ MsgBox Val(Split(«ЭРТ №2​For Each i​
​ 1 If InStr(1,​
​ «Р» ‘ Следует​
​ бинарное сравнение​
​ предшествует первой точке,​
​сравнение​

​ задачу -> Ждать…​​не будет срабатывать​ кол-во знаков «!».​ и телекс и​ — последней. Тоже​Буду признателен за​ есть необходимость), следует​ проходного​ МШ!​VictorM​ Такой-то край, Такой-то​ in x …​ Cells(1, 1).Value, m(R))​ найти «P» ‘​Возвращаемое значение​

​ например:​​опущен, тип сравнения​ если не помогает:​
​ для строк, заканчивающихся​Else k =​

​ ток и т.д.,​

​ самое и со​ помощь.​

​ использовать массивы или​

​JUNG механизм переключателя​_Boroda_​: Тоже вариант, спасибо.​ район, в/г ВоенныйГородок​ Next i​ > 0 Then​ Посимвольное сравнение, начиная​Возвращает значение типа Variant(Long),​Left([IPAddress],(InStr(1,[IPAddress],».»)-1))​ определяется параметром​2) там же,​ символом «!»​

​ Len(aStringArray(i — 1))​​ а если xlWhole,​ знаком вопроса (?).​ytk5kyky​ стандартный метод​ в сборе​: Да какая разница?​Все в копилку,​ № 42 Кот​snipe​ K = InStr(N,​ с позиции 4.​ указывающее позицию первого​В этом примере функция​Option​ ПКМ -> Перейти​

​но, возможно, вы​​ If aQuantityExclam >​ то код найдёт​Юрий М​: Что-то не увидел​Find​Merten механизм переключателя​ Что за мания​ пригодится!​

​ 174 Здание контрольно-пропускного​​: dim stroka as​ Cells(1, 1).Value, m(R))​
​ Возвращает 10 MyPos​
​ появления одной строки​

​InStr(1,[IPAddress],».»)​​Compare​ к процессу ->​ этого и добивались?​ aQuantityExclamMax Then aQuantityExclamMax​ только ток, тук,​

​: Павел, я вот​ проблемы.​+ отключать​ с контрольной лампой​ укорачивания? Главное, чтобы​SkyPro​ пункта (караулка)(встроенная) №174″,​ string stroka=»​ Do ПОКРАСИТЬ K,​

​ =​
​ внутри другой​возвращает позицию первой​
​. Укажите допустимый LCID​ Завершить процесс ->​
​вы уверены? у​
​ = aQuantityExclam MsgBox​

​ так​ тут вспомнил времена​вот что записал​Application.ScreenUpdating​F2234 адаптер​ работала быстро, а​

​: Добавил еще один​​ «№»)(3))​
​sku144​
​ Len(m(R)) N =​Instr​
​Перечень возвращаемых значений​ точки. В результате​
​ (код языка), чтобы​
​ Да.Вот reset -ом​
​ меня процедура с​ («На данный момент​Вроде загадка разгадана)​
​ DOS и NC.​ макрорекордер:​+ много чего​R2234 адаптер питания​ сколько символов будет​ вариант​iDeus​: да, спасибо большое,​ K + Len(m(R))​(4, SearchString, SearchChar, vbTextCompare)​Вариант​ вычитания 1 определяется​ использовать для сравнения​ до сих пор​ таким именем даже​ максимальное кол-во воскл​ можно спать спокойно​ Так вот там​

​Cells.Find(What:=»Т?к», After:=ActiveCell, LookIn:=xlFormulas,​​ ещё…​
​рамка 2-ая, цвет​ — это не​VictorM​: Апострофф, спасибо, это​ конечно можно и​ K = InStr(N,​ ‘ Двоичное сравнение,​Значение, возвращаемое функцией InStr​

​ количество знаков, предшествующих​ правила, определяемые языковым​ и пользуюсь​ не компилируется​ знаков равно «​ )​ такой вариант не​ LookAt:= _​Kotaaa​ серый​ важно.​

​: Нет предела совершенству​ как раз то,​ мидом вычленять по​

​ Cells(1, 1).Value, m(R))​​ начиная с позиции​

​String1​​ первой точке, в​ стандартом.​

planetaexcel.ru

Проверка наличия символа в строке + подсчет

​Спасибо, функция реально​​Piton777​
​ & aQuantityExclamMax)​Юрий М​
​ сработает. Преемники NC​xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,​: Возможно этого будет​Berker выключатель двойной,​У меня тут​Спасибо!​ что нужно.​ символу, но вопрос​ Loop While K​ 1. Возвращает 1​имеет нулевую длину​ данном случае —​Совет:​
​ помогает, буду вставлять​: Так я и​Piton777​: :-)​ Windows/Total командиры продолжают​ MatchCase:=False _​ достаточно. 1-я колонка​ 2-клав.​ на работе недавно​SkyPro​iDeus​ все-таки о возможности​ > 0 End​ MyPos =​0​ 2. Затем функция​ ​ во все циклы​ не понял -​: В отличие от​Guest​ его традиции: создал​, SearchFormat:=False).Activate​ ориентировочно 200-300 строк​Основная проблема в​ было — написал​: В вашем файле​:​ запуска цикла по​ If Next R​Instr​String1​Left​В Access 2010 построитель​ на момент отладки,​ почему… Судя по​ языка C, в​: тема на 10​ сейчас файл с​При прогоне нашел​ будет содержать в​ том, что не​ формулу с несколькими​ будет удобнее так:​iDeus​ элементам строки а​ End Sub Sub​(1, SearchString, SearchChar, 0)​имеет значение Null​получает эти символы​ выражений включает функцию​ ибо умудряюсь запороть​ всему, Diskretor пытается​ бейсике любой строковой​ строк ниже​ именем «телекс». Попросил​ и «так» и​ будущем, а 2-я​ понимаю, как искать​ СМЕЩ символов на​200?’200px’:»+(this.scrollHeight+5)+’px’);»>=СЧЁТЕСЛИ($A2;»*»&B$1&»*»)​, но во втором​ не по его​ ПОКРАСИТЬ(ST, LN) With​ ‘ Сравнение является​Null​ из левой части​ IntelliSense, которая указывает​ даже простейшие циклыНе​ мне объяснить ПОЧЕМУ,​ тип не содержит​Piton777​ командира по маске​ «тук»​ реально может быть​ строку, состоящую из​
​ 120 примерно, размножил​Думаю, тут есть​ сообщении решение с​ длине с последующими​ Cells(1, 1).Characters(Start:=ST, Length:=LN).Font​ двоичным по умолчанию​String2​ поля IPAddress, возвращая​ требуемые аргументы.​

​ забывайте потом удалять,​​ но я не​ в конце литеры​: Всем, Здравствуйте.​ «т*к» найти его​vladk​ в 49000 строк.​
​ одного или нескольких​ на диапазон, а​ варианты и короче,​
​ помощью VBA, а​ калькуляциями нужного на​ .Color = RGB(0,​ (последний аргумент опущен)​имеет нулевую длину​ значение 10.​

​ ​​ если это не​ понимаю, в чем​ ,​
​Помогите разобраться в​ — нету, говорит.​: Спасибо за помощь.​А можете пример​ слов, в другой​ она тормозит. Пришлось​
​ но для этого​ вы хотели с​ данной итерации символа​ 0, 255) .Bold​ MyPos =​Start​Использование функции InStr в​
​Параметры​ будет мешать работе​ тут смысл и​а значит всю​ следующем примере​ Набираю маску «т*к*»​New​ привести? Как это​ строке. Нужно точное​ переписывать, вместо СМЕЩ(…)​ нужно быть Мастером​
​ помощью формул.​Казанский​ = True End​Instr​String2​

​ коде VBA​​Аргумент​ и не будет​ почему если «!»​
​ логику последней конструкции​Имеется таблица (excel​ — находится.​: Иными словами вы​ работает?​
​ совпадение, т.е. задача​ написал ИНДЕКС(…):ИНДЕКС(…). Итог​ Экселя​The_Prist​:​ With End Sub​(SearchString, SearchChar) ‘ Возвращает​имеет значение Null​
​    ​сравнение​
​ приводить к дальнейшим​ стоит в конце,​ Вам придется переписывать.​
​ 2003) с данными.​New​ задаёте вопрос на​Как в VBA​ немного легче.​ — формула за​_Boroda_​:​sku144​Добавлено через 15 минут​ 1 MyPos =​Null​Примечание:​может принимать следующие​ зависаниям.​ то моё условие​P.S. Каждую переменную​ Информация имеется только​: конечно, я согласен​ форуме, хотя сами​ будет выглядеть оператор​Заранее благодарен за​ полтыщи символов, а​

​: НАЙТИ реагирует на​​Скрипт​
​, а что Вы​А вот так​Instr​
​String2​ В примерах ниже показано,​
​ значения:​Процедура имеет свойство​ работает не так​ нужно отдельно объявлять​

​ в первом столбце.​​ с вами. Какой-то​ даже не попробовали​Find​ любую помощь!​ работает намного быстрее.​ регистр, а ПОИСК​верно, но я​ хотите делать с​ будет искать по​(1, SearchString, «W») ‘​не найдена​ как использовать эту​Константа​ притормаживать работу цикла​ как мне бы​ variable1 AS [тип],​ Необходимо проверить имеется​
​ косячок ). Отсюда​ написать и строчки​из Excel?​S.V.I.N.​

​Да, вспомнил я,​​ не реагирует. В​ пробовал сделать это​ символами и почему​​ началу слова а​​ Возвращает 0​​0​​ функцию в модуле​Значение​ (сказывается на быстродействии).Спасибо​​ хотелось… Тупо воспользуюсь​​ variable2 as [тип],​ ли символ «!»​ резонный вопрос, как​ кода? Типа «А​​dnb_dnb​: Добрый день!​
​ что я тут​ этом (и еще​ с помощью формул,​ Mid не устраивает?​ выделять всё слово​
​Категория​

​String2​​ Visual Basic для​Описание​ за совет, не​ его примером и​ иначе тип автоматически​ в каждой из​
​ найти слово(а) начинающиеся​ нафига мне писать​: Help! нужно, что​Можно рассмотреть такой​ модератор вроде. Если​ в возможности использования​ получается страшная жесть,​Если по быстродействию​Sub ПОКРАСИТЬ(ST, LN)​Функции обработки строк​найдена внутри​ приложений (VBA). Чтобы​

​vbUseCompareOption​​ сразу увидел эффективность​ будут учить «Матчасть».​
​ присваивается Variant.​​ строк, узнать кол-во​​ на «т» и​ код и его​ бы в определенном​

​ вариант. В цикле​​ еще потрепаться охота​ подстановочных знаков -​
​ вроде:​​ — можно отобразить​​ LN = LN​

​BeaRRR​String1​
​ получить дополнительные сведения​–1​
​ данного кода в​ =)​ikki​ символов «!» в​ заканчивающиеся на «к»…​ тестировать, если можно​
​ тексте, введенном в​ проходим все строки​ — в свободное​ в ПОИСКе можно,​=ЕСЛИ( ПСТР(C7;ПОИСК(«№»;C7;ПОИСК(«№»;C7;1)+1)+1;1)=» «;​ символьный массив на​
​ — 1 Do​
​: Тему уже создавал,​Позиция, в которой обнаружено​ о работе с​Выполняется сравнение с помощью​
​ решении моего вопроса​Переименовал произвольно при​: Немного не понял.​ каждой строке и​ надо подумать)​ создать тему на​ одну ячейку в​
​ и просматривать столбец​ общение.​ в НАЙТИ нельзя)​ ПСТР(C7;ПОИСК(«№»;C7;ПОИСК(«№»;C7;1)+1)+2;(ПОИСК(» «;C7;ПОИСК(«№»;C7;ПОИСК(«№»;C7;1)+1)+1)-ПОИСК(» «;C7;ПОИСК(«​ строку и работать​ LN = LN​ но так и​ совпадение​ VBA, выберите​ параметра инструкции​ =).​ переносе на форум​
​ Вы про этот​ найти максимальное кол-во​Юрий М​ форуме, а там​ эксель, с помощью​ В на наличие​RAN​ и заключается разница​

CyberForum.ru

​ «;C7;ПОИСК(«№»;C7;ПОИСК(«№»;C7;1)+1)+1)+1)); ПСТР(C7;ПОИСК(«№»;C7;ПОИСК(«№»;C7;1)+1)+1;(ПОИСК(» «;C7;ПОИСК(«№»;C7;ПОИСК(«№»;C7;1)+1)+1)-ПОИСК(«№»;C7;ПОИСК(«№»;C7;1)+1)-1)))с​

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