VBA: Как можно получить строку до пробела? (обрезать строку до первого пробела)

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

Сделать это можно несколькими путями.

С использованием функции Mid:

1
2
3
4
5
6
7
Function getStringBeforeSpace(inputString As String)
i = 1
Do While (Mid(inputString, i, 1) <> " ")
  i = i + 1
Loop
getStringBeforeSpace = Mid(inputString, 1, i)
End Function
Function getStringBeforeSpace(inputString As String)
i = 1
Do While (Mid(inputString, i, 1) <> " ")
  i = i + 1
Loop
getStringBeforeSpace = Mid(inputString, 1, i)
End Function

или с использованием inStr

1
2
3
Function getStringBeforeSpace(inputString As String)
    getStringBeforeSpace = Mid(inputString, 1, InStr(1, inputString, " "))
End Function
Function getStringBeforeSpace(inputString As String)
    getStringBeforeSpace = Mid(inputString, 1, InStr(1, inputString, " "))
End Function

Первый метод работает так: при помощи функции mid берется один i-ый символ строки и сравнивается с пробелом (по-сути мы много раз режем строку и забираем 1 символ). Как только найден пробел цикл останавливается (внутри цикла счетчик). После цикла при помощи функции mid берется подстрока из строки, которую подали в функцию с 1-го символа и столько, сколько насчитало символов до пробела, то есть i символов.

Второй метод короче, удобнее и лучше. При помощи функции inStr (которой в параметрах нужно передать символ, с которого начать искать, строку в которой искать и строку что искать) мы получаем индекс пробела. Далее так же как и в первом случае при помощи функции mid выделяем подстроку до пробела.

Скачать пример

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

Добавить комментарий