Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Введение в VBA.doc
Скачиваний:
0
Добавлен:
07.01.2020
Размер:
2.27 Mб
Скачать
        1. Примеры использования функций vba

          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

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

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

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

Пример

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

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

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

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

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

End Sub

Строка фиксированной длины имеет всегда одну и ту же длину, и поэтому функция 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

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

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

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

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

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

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

End Sub

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

В 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

E

nd Sub

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