Передача аргумента по имени
При передаче аргумента по имени надо указать в вызове три элемента:
– имя аргумента (например, saveChanges),
– оператор присваивания с двоеточием (:=),
– значение аргумента.
В следующем примере метод Close вызывается с аргументами,передаваемыми по имени:
Workbooks("Мои таблицы.xls").Close saveChanges:=True, _
fileName:="Мои таблицы-2.xls", routeWorkbook:=False
Передавая аргументы по имени, не обязательно соблюдать их порядок. Приведенный ниже код идентичен предыдущему:
Workbooks("Мои таблицы.xls").Close routeWorkbook:=False, _
saveChanges:=True, fileName:="Мои таблицы-2.xls"
При передаче аргументов по имени программа становится более понятной, а по позиции – более короткой.
1.2. Ссылки: одиночные объекты и семейства
Как уже говорилось, при обращении к свойству или методу объекта их имена просто добавляют к имени объекта, отделяя от него точкой. Ссылка же на сам объект может выглядеть по-разному. К одиночному объекту семейства обращаются либо по имени, либо по его номеру в семействе объектов. Чтобы разобраться, чем отличаются два этих способа, уясним себе, что такое семейство (collection). Если не вдаваться в детали, семейство — это группа похожих объектов. Все объекты Excel можно отнести к одному из двух приблизительно равных по численности классов: одиночным объектам и объектам из семейства [3]. К первым обращаются непосредственно, ко вторым – по имени или по номеру. В предыдущих примерах обращение к рабочей книге Мои таблицы.xls было оформлено с помощью указателя на объект семейства Workbooks [4] по имени.
|
|
Как же узнать, является объект одиночным или входит в семейство? Для этого надо применить простые, интуитивно понятные правила.
Правило 1: | одиночный объект может существовать в данный момент времени только в одном экземпляре. Другими словами, он уникален. |
Правило 2: | объекты из семейства могут существовать одновременно в нескольких экземплярах. |
В Excel может быть открыто несколько рабочих книг, поэтому к объекту Мои таблицы.xls можно было бы, согласно правилу 2, обратиться по индексу, предварительно узнав его порядковый номер. Следующий пример демонстрирует эту возможность:
Sub СсылкаНаКнигуПоИндексу()
'1. Объявляем переменные:
Dim Автор As String
Dim КолОткрытыхКниг As Integer
'2. Определяем количество открытых книг:
КолОткрытыхКниг = Workbooks.Count
'3. Ищем среди открытых книг книгу с именем Мои таблицы.xls:
For i = 1 To КолОткрытыхКниг
If Workbooks(i).Name = "Мои таблицы.xls" Then
Автор = Workbooks(i).Author
MsgBox "Автор этой книги: " & Автор