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

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

Пример

Sub Встр_функции_1()

Dim Стр0, Стр1, Стр2, Стр3

Стр0 = " Строка "

Стр1 = RTrim(Стр0)

Стр2 = LTrim(Стр0)

Стр3 = Trim(Стр0)

MsgBox "(" & Стр1 & ")" & Chr(13) & _

"(" & Стр2 & ")" & Chr(13) & _

"(" & Стр3 & ")"

End Sub

При выполнении этой процедуры выводится диалоговое окно

Удаление ненужных символов - student2.ru

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

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

Пример

Sub Встр_функции_2()

Dim Стр0 As String, Стр1 As Byte

Стр0 = " Строка "

Стр1 = Len(Стр0)

MsgBox "Стр1=" & Стр1

End Sub

Удаление ненужных символов - student2.ru

Строка фиксированной длины имеет всегда одну и ту же длину, и поэтому функция Len всегда возвращает объявленную длину строки, независимо от фактической длины строки. Например, если в строковой переменной фиксированной длины Стр0 определить длину, равную 20 символам, а фактически находится слово "Строка", то функция Len(Стр0) возвратит результат, равный 20.

Примеры

Sub Встр_функции_3()

Dim Стр0 As String * 20, Стр1 As Byte

Стр0 = "Строка"

Стр1 = Len(Стр0)

MsgBox "Стр1=" & Стр1

End Sub

Удаление ненужных символов - student2.ru

Чтобы в таком случае узнать фактическую длину строки (в нашем случае - 6), необходимо использовать комбинацию функций Len(Trim(StrokeName)):

Sub Встр_функции_4()

Dim Стр0 As String * 20, Стр1 As Byte

Стр0 = "Строка"

Стр1 = Len(Trim(Стр0))

MsgBox "Стр1=" & Стр1

End Sub

Удаление ненужных символов - student2.ru

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

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

Функция StrComp

Формат функции:

StrComp (String1, String2 [, Compare])

где String1, String2 - любые два строковых выражения, которые необходимо сравнивать. Compare - необязательный аргумент, может быть любой из следующих предопределенных констант:

- vbBinaryCompare - бинарное сравнение двух строк;

- vbTextCompare - текстовое сравнение двух строк.

При бинарном сравнении коды символов упорядочены в соотвествии с их двоичным значением, и коды строчных и прописных букв раразличаются при сравнении. При текстовом сравнении VBA прописные и строчные буквы не различает. Если аргумент Compare опускается, то используется текущая установка Option Compare.

Если аргумент Compare опускается, то используется текущая установка инструкции Option Compare (см. Примечание к п. Инструкция условного перехода If…Then…Else).

Пример

В данном примере инструкция Option Compare используется для задания метода сравнения строковых данных, используемого по умолчанию.

Option compare Binary ' т.е. "AAA" < "aaa"' Устанавливает метод сравнения строковых данных Binary.Option compare Text ' т. е. "AAA" = "aaa".' Устанавливает метод сравнения строковых данных Text.

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

- -1, если String1 меньше String2;

- 0, если String1 и String2 равны;

- 1, если String1 больше String2.

Пример

Sub Встр_функции_5()

Dim R1 As String, R2 As String, R3 As String

R1 = StrComp("Строка1", "Строка2", vbTextCompare)

R2 = StrComp("Строка1", "Строка1", vbTextCompare)

R3 = StrComp("Строка2", "Строка1", vbTextCompare)

MsgBox "R1=" & R1 & " " & "R2=" & R2 & " " & "R3=" & R3

Удаление ненужных символов - student2.ru
End Sub

В первой инструкции присваивания текстовое выражение Строка1 меньше, чем Строка2, и поэтому значение R1=–1, во втором они равны (R2=0) и в третьем Строка2 больше, чем Строка1 (R3=1).

Функция InStr

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

Формат функции:

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

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

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

Compare имеет тот же смысл, что и в функции StrComp.

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

Пример

Sub Встр_функции_6()

Dim R1 As String, R2 As String

R1 = "Строка ввода"

R2 = "Ввод"

MsgBox "R2 входит в R1 с позиции " & _

InStr(1, R1, R2, vbTextCompare)

End Sub

Удаление ненужных символов - student2.ru

Наши рекомендации