Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование VBA.pdf
Скачиваний:
374
Добавлен:
03.05.2015
Размер:
3.07 Mб
Скачать

100

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

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

Зачастую строки в программе содержат ненужные символы пробелов

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

вработе программы. В 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

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

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

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

Пример

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

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

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

Стр1 = Len(Стр0) MsgBox "Стр1=" & Стр1

End Sub

Строка фиксированной длины имеет всегда одну и ту же длину, и поэтому функция Len всегда возвращает объявленную длину строки, незави-

101

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

Примеры

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

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

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

Стр1 = Len(Стр0) MsgBox "Стр1=" & Стр1

End Sub

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

Len(Trim(StrokeName)):

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

End Sub

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

 

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

Стр1 = Len(Trim(Стр0)) MsgBox "Стр1=" & Стр1

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

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

StrComp и InStr.

Функция StrComp

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

StrComp (String1, String2 [, Compare])

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

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

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

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

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

102

Пример

В данном примере инструкция 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 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 с позиции " & _

103

InStr(1, R1, R2, vbTextCompare)

End Sub

2.13.1.5.4. Выделение части строки

Задачу выделения части строки в VBA решают три функции:

Left, Right и Mid.

Функция Left

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

Left (String, Length)

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

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

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

Функция Right

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

Right (String, Length)

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

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

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

Функция Mid

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

Mid (String, Start, [, Length])

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

Length, Star t – любые численные значения.

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