Офисное программирование - Страница 12
Filter(<массивСтрок>,<строкаПоиск>[,<включение>] [,<сравнение>]) – просматривает массив строковых значений и ищет в нем все подстроки, совпадающие с заданной строкой.
Эта функция имеет четыре аргумента:
<строкаПоиск> – искомая строка;
<включение> – параметр (булевское значение), который указывает, будут ли возвращаемые строки включать искомую подстроку или, наоборот, возвращаться будут только те строки массива, которые не содержат искомой строки в качестве подстроки;
<сравнение> – параметр, определяющий метод сравнения строк.
Еще три функции обеспечивают преобразование строк:
LCase(<строка>) – преобразует все символы строки к нижнему регистру, например функция LCase(«ПОЧTA») возвращает строку «почта»;
UCase(<строка>) – преобразует все символы строки к верхнему регистру;
StrConv(<строка>,<преобразование>) – выполняет несколько типов преобразований строки в зависимости от второго параметра. Этот параметр описывается встроенными константами, например функция StrConv(«poccия»,VbProperCase) возвращает значение «Россия».
И последние две функции генерируют строки символов:
Space(<число>) – создает строку, состоящую из указанного числа пробелов;
String(<число>,<символ>) – создает строку, состоящую из указанного в первом аргументе числа символов. Сам символ указывается во втором аргументе.
Пример 13. Создать программу, работающую со строковыми переменными. Для этого создать форму, в метки которой выходят следующие сообщения:
1 метка: сообщается длина строки, введенной в первое текстовое поле (1 строка);
2 метка: преобразует все символы третьего текстового поля (3 строка) в заглавные буквы;
3 метка: выводит вместе содержание первого и второго текстовых полей (1 и 2 строки).
Технология выполнения
1. Откройте приложение Word, сохраните документ и перейдите в редактор VBA.
2. Создайте форму аналогично приведенному рис. 29.
3. Пропишите обработчик события кнопки ОК.

Рис. 29. Форма примера 13 в режиме конструктора и в рабочем состоянии
Private Sub CommandButton1_Click()
Dim a As String
Dim b As String
Dim c As String
Dim k As String
Dim d As String
Dim n As Integer
a = TextBox1.Text
n = Len(a)
Label7.Caption = «длина первой строки равна» & n & « символам»
c = TextBox3.Text
k = Ucase(с)
Label8.Caption = k
b = TextBox2.Text
d = a + " " + b
Label9.Caption = d
End Sub
4. Откомпилируйте программу.
5. Запустите форму на выполнение.
3.3. Процедуры и функции VBA
Процедуры VBA бывают двух типов:
• процедуры обработки событий;
• общие процедуры.
Имя процедуры обработки события, связанного с элементом управления, состоит из имени элемента управления, символа подчеркивания и имени события, например Закрытъ_ click – процедура обработки нажатия кнопки Закрыть в форме.
Общие процедуры VBA могут храниться в любом типе модулей VBA, так как они не связаны с конкретным объектом. Они выполняются только тогда, когда явно вызываются другими процедурами. Обычно эти процедуры реализуют какие-то общие действия, которые могут вызываться разными процедурами обработки событий.
Процедуры, как и переменные, должны быть объявлены до того, как они могут быть вызваны. Объявления общих процедур помещаются в разделе General (Общая область) модуля. Процедуры обработки событий хранятся в разделах модуля формы или отчета, соответствующих связанным с этими процедурами объектам.
В свою очередь, процедуры VBA делятся на подпрограммы и функции. Они являются фрагментами программного кода, который заключается между операторами Sub и End Sub или между Function и End Function соответственно. Процедуры-подпрограммы выполняют действия, но не возвращают значение, поэтому они не могут быть использованы в выражениях. Процедуры обработки событий представляют собой процедуры-подпрограммы. Процедуры-функции всегда возвращают значение, поэтому они обычно используются в выражениях. Общие процедуры могут быть как процедурами-подпрограммами, так и процедурами-функциями.
Синтаксис процедуры-подпрограммы VBA:
Sub <имяПроцедуры> (<аргумент1>, <аргумент2>, …) <оператор1>
<оператор2>
End Sub
Список аргументов у процедуры может отсутствовать и может содержать необязательные аргументы.
Объявление каждого аргумента имеет следующий синтаксис:
<имяАргумента> [As <типДанных> [=<значениеПоУмолчанию>]],
где <имяАргумента> – идентификатор, составленный согласно правилам создания имен и представляющий аргумент в теле процедуры;
<типДанных> – это либо встроенный тип данных, либо тип, определенный пользователем. Тип данных аргумента может не указываться, и тогда считается, что он имеет тип Variant. Аргументом процедуры может быть и массив. Тогда после имени аргумента должны стоять круглые скобки.
Для необязательного аргумента может быть указано <значение по умолчанию>, которое будет использоваться, если этот аргумент будет опущен. Если значение по умолчанию не указано, необязательный аргумент инициируется точно так же, как переменная, т. е. числовой аргумент – в 0, строковый – в строку нулевой длины и т. д.
Описание функции:
Function <имяФункции> (<аргумент1>, <аргумент2>, …) [As
<типЗначение>]
<оператор1>
<оператор2>
<имяФункции> = <возвращаемоеЗначение>
End Function
Кроме того что ключевое слово Sub заменяется на Function, в теле функции обязательно присутствует оператор присваивания имени функции какого-нибудь значения. Это значение и возвращается функцией. В заголовке функции может быть описан тип возвращаемого значения. Если этот тип не указан, функция возвращает значение Variant.
Рассмотрим два примера объявления подпрограмм и функций.
Sub Init (arr() As Integer)
Dim i As Integer, str As String
For i * LBound(arr) To UBound(arr)
str = "Введите количество книг на полке № " & I
arr(i) = InputBox(str) 'функция ввода строки
Next I
End Sub
Function SummaVar(ParamArray varArg() As Variant) As Integer
Dim intSum As Integer, numb As Variant
For Each numb In varArg 'цикл по всем элементам массива
intSum = intSum + numb 'по умолчанию инициируется в 0
Next numb
SummaVar = intSum 'присвоение возвращаемого значения
End Function
Чтобы использовать написанную подпрограмму или функцию, ее нужно вызвать. Вызов процедуры-подпрограммы отличается от вызова процедуры-функции.
Обычно подпрограмма вызывается из другой подпрограммы или функции с помощью специального оператора VBA. Если она имеет аргументы, ей передается список фактических параметров.
Оператор вызова подпрограммы может использоваться в двух формах:
<имя Процедуры><список фактических параметров>
или
Call <имя Процедуры> (<список фактических параметров>).
В первом случае список фактических параметров задается без скобок, во втором – использование скобок обязательно. Но всегда список фактических параметров должен полностью соответствовать списку аргументов, заданному в объявлении подпрограммы. Все фактические параметры для обязательных аргументов должны быть перечислены в том порядке, в каком они присутствуют в описании подпрограммы, после чего могут идти параметры для необязательных аргументов.