Объектной моделью excel это

VB
и VBA
не одно и то же. VB
представляет собой язык для разработки
программного обеспечения, которое
используется отдельно от MS
Office.
VBA
входит в состав пакета MS
Office.
Устанавливая его, вы получаете доступ
к VBA.
Он необходим для управления данными MS
Office.

Язык VBA
поддерживает все базовые элементы
любого другого языка программ.:
1)переменные 2)массивы 3)подпрограммы
4)управляющие структуры 5)возможность
создания пользоват. типов данных и т.д.

VBA
явл. языком визуального и событийно
управляемого программирования. В нем
есть возможность создания форм с
управляющими элементами, написания
процедур, обрабатывающих события. VBA
позволяет работать с огромным набором
объектов. VBA
поддерживается такими приложениями,
как Access,
PowerPoint,
Word
и др. В каждом из приложений свой набор
объектов. В Access:формы,
запросы, отчеты, таблицы; в Word:абзац,
сноска; в PowerPoint
слайд. Каждая программа поддерживает
свою версию VBA.

VBA
отличается от других языков программирования
тем, что предоставляет возможность
непосредственно работать со всеми
объектами MS
Office.
Он имеет графическую инструментальную
среду, позволяющую создать экранные
формы и управляющие элементы.

Объектная модель
Excel
является основой структуры программы.
Без создания иерархической структуры
объектов программы, нельзя использовать
VBA
в Еexcel.

Все элементы Excel
– объекты, с которыми приходится работать
в программе. Чаще всего используются
такие объекты, как рабочие книги
WorkBooks,
рабочие листы WorkSheets,
диапазоны Range.
Объект WorkSheets
имеет свойство Name,
только объект Range
не имеет ярко выраженной коллекции.
Выступает как коллекция и как объект.
Чаще исп. В программном коде, обладает
огромными возможностями.

2. Объектная модель Excel: понятие объекта, метода, свойства, события.

Объектная модель
Excel
является основой структуры программы.
Без создания иерархической структуры
объектов программы, нельзя использовать
VBA
в Еexcel.

Все элементы Excel
– объекты, с которыми приходится работать
в программе. Чаще всего используются
такие объекты, как рабочие книги
WorkBooks,
рабочие листы WorkSheets,
диапазоны ячеек Range
ckarts.

Свойства определяют
внешний вид и состояние объекта. Для
определения свойства его нужно указать
справа от имени объекта через точку.
Range(“A1”).Value
– свойство описывает содержимое ячейки
А1. Существует 2 вида опереций при работе
со свойствами: 1)присваивание свойству
значения. Объект.Свойство=<значение>

Range(“A1”).Value=
«Отчет о командировке». 2)полученное
свойство присваивается переменной.
Переменная=Объект.Свойство

Var=
Range(“A1”).Value

Методы объекта
открывают задачи, которые может выполнять
объект. Объект.Метод – когда у метода
нет параметров. Range(“A1”).CleanContenst
– очищает диапазон, но сохраняет
форматирование. Если метод имеет
аргументы, то они перечисляются через
, после названия метода.

Событие представляет
собой действие, распознаваемое объектом,
для которого можно запрограммировать
отклик. Суть программирования в VBA
заключается в 2 понятиях: событие и
отклик на него.

Свойства и методы
могут быть связаны между собой: выполнение
метода приводит к изменению свойства
объекта, а изменение некоторого свойства
может вызвать наступление события.

3. редактор VB.
Окно проекта. Окно редактирования кода.
Окно редактирования формы. Панель
элементов. Окно свойств. Окно просмотра
объектов. Окна
Immediate,
Watch.
Редактор
VB=Visual
Basic
Editor.
Редактора VBA
не бывает! Для запуска этого редактора
нужно открыть приложение Excel
и выполнить команду Сервис/Макрос/Редактор
VB
или Alt+F11.
Чтобы вернуться в Excel,
нужно повторно нажать Alt+F11.
В открывшемся окне VBA:
строка заголовка, меню, панели инструментов
и несколько окон.

По умолчанию в
верхнем левом углу находится окно
проекта
.
Вывести его можно командой View/Project
Explorer.
Это окно содержит список всех открытых
проектов и список всех их компонентов.
В проекте всегда располагаются 3
модуля(на каждом листе) и модуль книги.
Все модули делятся на: 1) стандартные –
добавляются к проекту Insert/Module.
Они содержат макросы, функции и процедуры.
2) модули объектов – модули, связанные
с рабочими книгами, раблчими листами и
формами. Проект VBA
состоит из объектов, имеющих иерархическую
структуру, и включает: объекты Excel,
формы, стандартные модули и модули
классов. Окно
редактирования кода.
В
окне проекта выделяете объект, для
которого будет введен программный код.
Затем выполнить команду View/Code.
Откроется окно, в которое нужно ввести
программный код. Окно
редактирования формы.

Для вывода формы: Insert/User
Form.
На экране появится форма. Окно
свойств.
Для
открытия: View/Properties
Window.
В левой части окна перечислены свойства
объекта, в правой – значения свойств,
которые можно изменять. Окно
просмотра объектов.
View/Object
Browser
или F2.
В верхнем левом углу открывшегося окна
– список библиотек объектной модели
Excel.
Оно дает спраку о всех объектах Excel,
их свойствах и методах.

Панель
элементов
(View/Dwbug)
в стандартном
варианте включает различные классы
управляющих элементов: CommandButton
(командная кнопка), TextBox,
Label
и др. Существует возможность дополнить
панель с помощью команды Tools/Additional
Controls.

Окно Immediate
– один из инструментов отладки.
Предназначено для непосредственного
ввода команд. Окно Watch
– порядок выполнения программы и
отслеживание ошибок.

4. Создание
простой программы на примере приложения
«Информация о продажах по регионам».

Задача:
создать программу, которая будет
отслеживать продажи в каждом регионе.
Для каждого региона отразить сообщение
с количеством месяцев, когда продажи
превышали заданный объем, введенный
пользователем. Порядок выполнения:
открыть Excel
и на первом листе создать список
следующего вида:

А

В

С

G

месяц

Регион1

Регион2

Регион3

Янв2005

….

Дек2006

Отформатировать
столбцы(1 – дата, остальные – формат
денежный). Заполнить список. Затем
выделить диапазон ячеек B2:G25
и присвоить ему имя SalesRange.
Перейти в редактор вба: Alt+F11
или Сервис/Макрос/Редактор Вб. Если окна
нет, выполнить команду View/Project
Explorer.
Далее выполнить Insort/Module,
откроется окно редактора. Ввести
следующий программный код:

Sub
CountHighSales()

Dim
i As Integer, j As Integer, ks As Integer, s As Currency

s = InputBox(«Введите
цену для сравнения», «окно для ввода
критерия»)

For
i = 1 To 6

ks
= 0

For
j = 1 To 24

If
Range(«SalesRange»).Cells(j, i) >= s Then

ks
= ks + 1

End
If

Next j

MsgBox «в регионе
» & i & » объем продаж превышал
» & s & » в » & ks & » месяцах»

Next i

End Sub

Запустить программу
на выполнение: F5
или Run/Run
Sub.
На экране появится окно InputBox. Запуск
программы с помощью кнопки, расположенной
на рабочем листе.
Находясь
на рабочем листе, выполнить команду
Вид/Панели инструментов/Формы. В
появившемся окне выбрать элемент Кнопка
и нарисовать на рабочий лист. Откроется
окно, в котором предлагается создать
макрос, выбрать название CountHighSales
и закрыть. Дать свое название кнопке.
Для запуска программы щелкнуть на этой
кнопке.

Создать программу
можно и другим способом, начиная с
размещения кнопки. Появляется окно
«Назначить макрос объекту». Нажать на
кнопку Создать. Запустится редактор
VBE
и откроется окно редактирования кода
макроса. Ввести программный код.

5. Стандартные
элементы управления
VB:
понятия, свойства, методы, события общие
для этих элементов.

Краткая
характеристика элементов управления
.
Элементы управления — это объекты,
которые можно разместить на форме. Как
и все объекты, они имеют свойства, методы
и события. Свойства определяют внешний
вид и поведение. Изменять свойства можно
как во время проектирования (через окно
свойств), так и в программном коде. Общие
свойства: name
– имя, которое используется для ссылок
на элементы управления в программном
коде. Left,
Top
– левый верхний угол элемента. Width,
height
– ширина, высота элемента. Visible
– будет ли виден на экране. Методы: Move
– перемещение элемента на форме. Drag
– перетаскивание. События: Set
Focus,
click,
dblclick.
Элемент управления Командная кнопка
(CommandButton).
Свойства: Caption
— текст на кнопке Picture-
определяет рисунок на кнопке. Picture
Position
— определяет позицию рисунка на кнопке.
Событие: Click
— возникает при нажатии пользователем
кнопки Мышью, DblClick-
двойной щелчок, когда возникает нажатие.
Элемент управления счетчик SpinButton
— позволяет уменьшать или увеличивать
числовое значение в результате щелчка
стрелки. Элемент управления полоса
прокрутки ScrollBar.
Позволяет выбрать значение из заданного
диапазона с помощью мыли. Щелчком мыши
на концах полосы прокрутки или на самой
полосе путем перетаскивания бегунка.
Важнейшие свойства SpinButton
и ScrollBar:
max-
максимальное значение, выдаваемое
полосой прокрутки или счетчиком (всегда
положителен) min-
минимальное значение выдаваемое этими
элементами. CmalChange-
отрицательное или положительное целое
число равное шагу изменения значения
этих элементов в тот момент,
когдыапроизводится щелчок. событие
Change
происходит при смене значений этих
элементов. С помощью свойства Value
в некоторой переменной можно запомнить
текущее значение этого счетчика. Элемент
управления рамка (Frame)
Она является контейнером и служит для
объединения других элементов в группу.
После чего помещенными в нее объектами
можно управлять как единым целым (либо
переключатели, либо флажки обычно в нее
помещаются) Свойства: Caption-
задает текст, который выводится в левом
верхнем углу рамки; Appearance-
2 значения: 0- Flat
(простая рамка), 1- 3D
объемная. Элемент управления текстовое
поле.
Он
обеспечивает возможность ввода текста
пользователем во время работы приложения
или отображение информации, задаваемой
свойством Text.
Свойства: text-
текстовое поле, характеризуется еще
свойствами, позволяющими использовать
этот элемент при создании полей,
предназначенных для ввода пароля.
PasswordChar
задает символ отображаемый в поле вместо
возможных символов. Maxlength-
максимальное количество символов,
вводимых в поле. Элемент управления
Метка (надпись) он используется в форме
для размещения статичного текста.
Свойства: Caption-
текст который размещается на этом
элементе, размер не более 1024 байт. Font-
внешний вид шрифта.

6. Типы подпрограмм
и их определения: определение и виды
процедур. Примеры процедур разных видов.

Логические
фрагменты кода, которые выполняют
определенную задачу, называются
подпрограммами. В вба подпрограммами
называют макросы, процедуры и даже
функции.

Можно создать
основную процедуру и вызвать из нее
остальные процедуры. В этом случае набор
совместно работающих процедур наз.
приложением. Существуют следующие виды
процедур: 1)обработки событий 2) макросов
3) пользователей. Процедура обработки
события всегда связана с каким-либо
объектом.

Private
Sub
ИмяОбъекта_Событие()

<тело
процедуры обрабатываемого события>

End
Sub

Пример:
Private Sub CommandButton_Click()

Ипотека.Show

End
Sub

Процедура
обработки макроса имеет следующий
синтаксис:

Sub
ИмяМакроса ()

<Тело
макроса>

End
Sub

Для вызова макроса
из главной процедуры используется
оператор Call
ИмяМакроса. При условии, что все процедуры,
в том числе и главная, расположены в
одном модуле.

Пример:

Sub
MainProcedure()

Call
GetProblemSize

Call
Initialize

Exit
Sub

End Sub

Sub
GetProblemSize()

Ncities =
Range(«DistMatrix»).Rows.Count

ReDim
Visited(Ncities)

ReDim
Route(Ncities + 1)

End Sub

Sub
Initialize()

Dim I As
Integer

Route(1) = 1

Route(Ncities + 1) = 1

Visited(1) = True

For
I = 2 To Ncities

Visited(I) = False

Next

TotDist = 0

End Sub

Синтаксис процедуры
пользователя:

[Private/Public]
Sub ИмяПроцедуры
(Параметры)

<Тело процедуры>

End
Sub

Элементы списка
параметров имеют следующий вид:
ИмяЭлемента As
ТипДанных

7. Типы подпрограмм
и их определения: определение и виды
процедур. Примеры процедур разных видов.
Логические
фрагменты кода, которые выполняют
определенную задачу, называются
подпрограммами. В вба подпрограммами
называют макросы, процедуры и даже
функции. Функция – это подпрограмма,
которая действует в пределах своего
блока и возвращает только одно значение.
Функции: 1)ф. пользователя 2) ф. модулей
классов. Функция имеет следующий
синтаксис:

[Private/Public]
Function
Имя функции(список параметров) As
ТипДанных

<тело функции>

End
Function

Тип данных для
функции предназначен для определения
типа и возвращения функцией зн-я

Чтобы создать
функцию пользователя, надо: 1. если нет
модуля Insert/Module
2. Insert/Procedure
3. в открывшемся окне выбрать переключатель
“Function”,
в поле Name
ввести имя функции («Доход») 4. в этом же
окне установить переключатель «общие»,
чтобы был тип – Public
5. Ок. Откроется окно редактора. Ввести
параметры функции и код.

Option
explicit

Option
Base 1

Function
Doxod (procent as double, platezh as variant, god as variant) as
double

Dim
i, j, n as integer, s as double

n=platezh.rows.count

s=0

for
i=1 to n

s=s+platezh(i)/(1+procent)^((god(i)-god(1))/365)

next
i

doxod=s

end
fuction

Не закрывая окна
View/Object
Browser.
Откроется окно просмотра объектов. В
левом верхнем углу выбрать VBAProject
и в окне Классы отобрать элементы
текущего проекта. Выбрать модуль, в
котором ваша функция. Затем в окне
Компоненты отобрать все элементы, в том
числе и функцию Доход. Щелкнуть правой
кнопкой мыши на Доход и выбрать значение
Свойства. Откроется окно «Параметры
компонента», в нем ввести описание(назначение)
функции. Закрыть окно и после этого ваша
функция попадет в библиотеку стандартных
функций Excel.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Аннотация: Лекция посвящена описанию объектной модели MS Excel и подробному описанию методов, свойств и событий Application.

13.1. Особенности программирования для MS Excel

Microsoft Office Excel — это популярные электронные таблицы. Обычно, программируя для этой программы, преследуют такие цели:

  • Автоматизация вычислений.
  • Автоматизация ввода и обработки информации.
  • Работа с базами данных — вывод, ввод, анализ, визуализация информации.
  • Анализ финансовой и другой информации.
  • Создание систем для организации автоматизированного ввода данных
  • Математическое моделирование.

В общем виде программирование в Excel похоже на работу с Microsoft Word. Однако одно из главных отличий заключается в том, что в Excel рабочая область листа разбита на ячейки, каждая из которых имеет собственное имя. Имена ячеек могут быть двух видов.

  • Первый вид (стиль A1) — это имя, состоящее из буквенного имени столбца и номера строки. Например, A1 — ячейка, находящаяся на пересечении столбца А (первого) и первой строки.
  • Другой вид — это индексы ячеек (стиль именования R1C1 ). Для адресации ячейки в таком стиле указывают номер строки (R — Row — строка) и номер столбца (C — Column — столбец), на пересечении которых расположена ячейка. Строки изначально пронумерованы, а номера столбцов начинаются с 1 — первому столбцу соответствует столбец A, второму — В и т.д. Например, (2, 3) — это адрес ячейки, находящийся на пересечении второй строки и третьего столбца, то есть, если переложить это на стиль A1 — получим ячейку С2 (рис. 13.1.)

Ячейка C2 на листе MS Excel

Рис.
13.1.
Ячейка C2 на листе MS Excel

Для выполнения большинства операций в MS Excel применяются следующие объекты.

  • Excel.Application (Приложение) — объект, представляющий приложение Microsoft Excel, аналогичен Word.Application.
  • Workbook (Рабочая книга) — представляет рабочую книгу — аналог документа Microsoft Word. Однако, в Word мы работаем с данными, расположенными в документе, а в Excel на пути к данным есть еще один объект — рабочий лист.
  • Worksheet (Рабочий лист) — книга в MS Excel разбита на рабочие листы. Именно на листе расположены ячейки, которые могут хранить информацию и формулы.
  • Range (Диапазон) — может быть представлен в виде одной ячейки или группы ячеек. Этот объект заменяет множество объектов для работы с элементами документов ( character, word и т.д.), которые применяются в Microsoft Word. В результате работа с листом становится очень четкой и удобной — чтобы работать с какой-либо ячейкой, надо знать лишь ее имя (в формате A1) или адрес ( R1C1 ).
  • QueryTable (Таблица запросов) — этот объект используют для импорта в Microsoft Excel информации из баз данных. Подключение к базе данных, запрос информации и т.д. производятся средствами объекта, а итоги запроса выгружаются на лист MS Excel в виде обычной таблицы.
  • PivotTable (Сводная таблица) — это особый вид электронной таблицы Excel — она позволяет в интерактивном режиме обобщать и анализировать большие объемы информации, в частности, взятой из базы данных.
  • Chart (Диаграмма) — представляет собой диаграмму. Обычно их используют для визуализации данных.

Давайте начнем рассмотрение объектной модели MS Excel с объекта Application.

13.2. Объект Application

13-01-Excel Application.xlsm — пример к п. 13.2.

Принципы работы с объектом Application в MS Excel очень похожи на таковые в MS Word.

Рассмотрим пример. Откроем MS Excel, добавим на рабочий лист кнопку, добавим в обработчик щелчка по кнопке такой код (листинг 13.1.).

MsgBox Excel.Application.Name


Листинг
13.1.
Вывести имя приложения

После выполнения программы в окне сообщения отобразится имя приложения — в данном случае — Microsoft Excel. Очевидно, что свойство Name объекта Application возвращает имя приложения.

Теперь рассмотрим наиболее важные методы и свойства Application. Некоторые из них похожи на таковые в MS Word. Например, метод Quit точно так же, как в Word, закрывает приложение, свойство Visible отвечает за видимость окна программы и т.д.

13.3. Методы Application

13.3.1. Calculate — принудительный пересчет

Этот метод, вызываемый для объекта Application, позволяет пересчитать все открытия книги. Его же можно вызывать для отдельных книг (объект Workbook ) листов ( Worksheet ), ячеек и их диапазонов ( Range ). Например, код из листинга 13.2. позволяет пересчитать все открытые книги.

Application.Calculate


Листинг
13.2.
Пересчитать все открытые книги

13.3.2. GoTo — переход в ячейку

13-02-Excel GoTo.xlsm — пример к п. 13.3.2.

Позволяет выделить любой диапазон ячеек в любой книге, причем, если книга не активна — она будет активирована. Так же метод может запускать макросы Microsoft Excel.

Полный вызов метода выглядит так:

Goto(Reference, Scroll)

В качестве параметра Reference используется ссылка на ячейку или диапазон ячеек, которые должны быть выделены после вызова метода. Так же здесь может быть использовано имя макроса — тогда он будет запущен.

Параметр Scroll отвечает за «перемотку» листа Excel к выделенным ячейкам — так, чтобы левый верхний угол выделения совпадал бы с левым верхним углом отображаемой области листа. Если Scroll установлен в True — лист перематывается, если в False — нет.

Например, такой вызов (листинг 13.3.) позволяет выделить ячейку H500 на активном листе.

Application.Goto _
    Reference:=ActiveSheet.Range("H500"), _
    Scroll:=True


Листинг
13.3.
Выделить ячейку H500

Как видите, обращение к активному листу очень напоминает обращение к активному документу в MS Word. Обратите внимание на то, что мы используем полное обращение к методу — Application.GoTo — как вы знаете, обычно свойства и методы объекта Application можно использовать в коде, не указывая этого объекта. Однако, если в этом случае не указать Application, то вместо метода GoTo программа попытается выполнить оператор безусловного перехода GoTo.

13.3.3. SendKeys — имитация нажатий на клавиши клавиатуры

13-03-Excel SendKeys.xlsm — пример к п. 13.3.3.

Очень интересный метод — позволяет передавать в активное окно приложения нажатия клавиш. Полный вызов метода выглядит так:

SendKeys(Keys, Wait)

Параметр Keys позволяет задавать клавиши, нажатия которых будут переданы приложению. Метод поддерживает эмуляцию как алфавитно-цифровых, так и управляющих клавиш, для которых применяется специальная кодировка. Алфавитно-цифровые клавиши указываются при вызове в своем обычном виде Например, для передачи символа «Ф» нужно указать его при вызове метода и т.д.

Чтобы передать приложению нажатия клавиши Backspace — используйте код {BS}. Для передачи нажатия кнопки Enter используйте значок ~ (тильда), для клавиши Del — код {DEL}.

Для передачи приложению нажатий клавиш Shift, Ctrl или Alt, можно воспользоваться следующими кодами этих клавиш:

  • SHIFT+ (знак плюс)
  • CTRL — ^ (крышка)
  • ALT % (знак процента)

Параметр Wait может принимать значения True или False. Если он будет установлен в True — макрос подождет, пока приложение обработает введенные с «клавитуры» данные, после чего продолжит выполнение. Если в False — макрос ждать не будет.

Рассмотрим пример. С помощью метода SendKeys введем в ячейку A1 текст «Сейчас закрою программу!», после чего попытаемся закрыть программу, «нажав» сначала Alt, потом Ф (для открытия главного меню Office), и потом — Ы — для выхода из программы. Подразумевается, что при запуске макроса (листинг 13.4.) указанная ячейка активна — в ней находится рамка выделения.

Application.SendKeys ("Сейчас закрою программу!")
    Application.SendKeys ("%ФЫ")


Листинг
13.4.
Имитация нажатий клавиш клавиатуры

После выполнения этого кода вы увидите окно со стандартным вопросом о сохранении документа.

13.3.4. Wait — пауза при выполнении макроса

13-04-Excel Wait.xlsm — пример к п. 13.3.4.

Позволяет сделать паузу в выполнении макроса. Пауза может быть нужна для того, чтобы пользователь успел что-то рассмотреть или для того, чтобы на время освободить вычислительные ресурсы системы.

При вызове этого метода указывается время, на которое должно быть приостановлено выполнение макроса. После того, как истекает время, заданное при вызове метода, он возвращает True и выполнение программы продолжается. Например, в листинге 13.5. так можно остановить выполнение прораммы на 7 секуд, после чего — вывести сообщение.

If Application.Wait(Now + TimeValue("0:00:7")) Then
    MsgBox "Семь секунд прошло!"
End If


Листинг
13.5.
Приостановка выполнения программы

Здесь мы получаем значение типа Date с помощью функции TimeValue. После того, как пройдут 7 секунд, выполнение макроса возобновится, метод возвратит True, будет выполнено условие и выведено сообщение.

Архив материалов

Опубликовано 03.04.2017 18:21

Привет всем! Продолжаем наш видеокурс по написанию макросов в Excel. В предыдущих видеоуроках вы уже узнали, в какой среде пишутся макросы, какими способами можно их запустить и написали свой первый макрос. Сегодня же давайте подробнее поговорим про объекты Excel. Эта тема для нас очень важна, так как для разработки решений, использующих Microsoft Office Excel, необходимо взаимодействие с объектами, предоставляемыми объектной моделью, и их понимание. Давайте разбираться.

Что такое Объекты в Excel

Объектами в Excel называется всё то, на что вы можете указать. Например, это график, рабочие листы, ячейка или диапазоны ячеек, и сами Excel-файлы.

Пример.

Из предыдущих уроков, вы уже знаете, как зайти в редактор кода VBE. В качестве примера возьмем макрос, который в указанную клетку вписывал строку «Академия Excel»:

[php]

Sub objects()

Range(«B3»).Value = «Академия Excel» Application.Workbooks(«Книга1.xlsx»).Worksheets(«Лист1»).Range(«B3»).Value = «Академия Excel»

End Sub

[/php]

Строка кода

Range(«B3»).Value = «Академия Excel»

означает, что в ячейку В3 будет записано значение “Академия Excel”. А строка

Application.Workbooks(«Книга1.xlsx»).Worksheets(«Лист1»).Range(«B3»).Value = «Академия Excel»

выполняет ту же функцию, но указывает полную адресацию объекта Excel.

Таким образом, чтобы обратиться к книге, мы написали Application.Workbooks(«Книга1.xlsx»), книга стала активной, далее если мы говорим про конкретный лист, то мы поставили точку(.) и ввели Worksheets(«Лист1»). Далее опять указали конкретную ячейку Range(«B3»), поставили точку(.) и записали в ячейку значение Value = «Академия Excel», т.е. объектами Excel в данном примере является Книга1, Лист1 и ячейка В3.

Важно!!! Надо понимать, что когда вы не пишете полный адрес, то работаете с активной книгой, активным листом. Если указываете полный адрес – файл должен быть открыт, а лист существовать.

Напоминание!!!

  • • Пошаговое выполнение кода – клавиша F8.
  • • Горячие клавиши Ctrl+Space — выпадающий список с подсказками Excel на объекты, свойства и методы, характерные именно для этого объекта. Клавишей Tab подтверждаем выбор.

Основные понятия урока:

1. Всё, что вы видите в Excel, является объектом.

2. Все объекты Excel объединены в иерархию.

[php]

Application.Workbooks(«Книга1.xlsx»).Worksheets(«Лист1»).Range(«B3»)

файл лист ячейка

[/php]

3. Ссылка на активную ячейку. Совсем не обязательно указывать полный путь, чтобы изменить значение в ячейке.

Поздравляем, вы познакомились с объектами Excel! На следующем видеоуроке мы поговорим про объекты Workbooks и Worksheets. До новых встреч!

Приятного всем просмотра! Учитесь с удовольствие! Всегда ваш LoftBlog.

2006 г.

Объекты Excel
Лекция из курса «Основы офисного программирования и документы Excel»

Биллиг Владимир Арнольдович
Интернет-Университет Информационных Технологий, INTUIT.ru

Оглавление

Объектная модель Excel

Объект Excel Application

Общие объекты и Excel.Application

Свойства — участники объекта

Терминальные свойства

Методы объекта Application

События объекта Excel.Application

Создание объекта Application, реагирующего на события

События, связанные с рабочей книгой

События, связанные с объектом Sheet

Пример обработки события Change

Внешние ссылки, Web-запросы и событие Change

События, связанные с объектом Window

Коллекция Workbooks и объект Workbook

Коллекция Workbooks

Объект Workbook

Свойства-участники объекта Workbook

Терминальные свойства объекта Workbook

Методы объекта Workbook

События объекта Workbook

Коллекция WorkSheets и объект WorkSheet

Коллекция WorkSheets

Объект WorkSheet

Свойства объекта Worksheet

Свойства — участники

Изменения в объектной модели объекта WorkSheet

Терминальные свойства объекта WorkSheet

Методы объекта WorkSheet

«Знакомые» методы

Методы — «незнакомцы»

Методы — свойства

События объекта Worksheet

Коллекция Charts и объект Chart

Коллекция Charts

Объект Chart

Как получить объект Chart

Источники данных и структура объекта Chart

Свойства — участники объекта Chart

Терминальные свойства объекта Chart

Методы объекта Chart

События объекта Chart

Построение обработчиков событий

Объекты Range и Selection

Адресация ячеек

Формат R1C1

Смещение и свойство Offset

Свойства и методы объекта Range

Сравнение свойств объектов Range и Worksheet

Терминальные и нетерминальные свойства объекта Range

Методы объекта Range

Программист, работающий в Excel, должен свободно ориентироваться в мире его объектов. Мощь офисного программирования определяется тем, что изначально в распоряжении программиста находится большое число уже готовых объектов. Чтобы с толком распорядиться предоставляемыми возможностями, объекты нужно знать.

Разговор об объектах Excel целесообразно начать с рассмотрения каркаса документа Excel. Многочисленные библиотеки объектов Office 2000, совокупность которых для программиста и представляют Office 2000, задают каркас всех документов, которые можно построить в этой среде. Когда создается новый документ, например, рабочая книга Excel, то по умолчанию из всей совокупности библиотек выбирается несколько, объекты которых и составляют каркас документа. Эти объекты доступны программисту, без каких либо дополнительных усилий. Центральную роль в каркасе документов Excel играют, конечно же, объекты библиотеки Excel. Но знание и всех других объектов, входящих в каркас, необходимо. Например, при программном создании интерфейса необходимо знание общих объектов библиотеки Office. Отмечу еще, что при желании программист всегда может расширить каркас документа, добавив в него те или иные библиотеки. Каркас, создаваемый по умолчанию в тот момент, когда открывается новая рабочая книга, состоит из объектов, входящих в состав следующих библиотек:

  • Excel — библиотека, задающая основу документов Excel. Здесь хранится класс, задающий корневой объект Excel.Application, и все классы объектов, вложенных в корневой объект.
  • Office — библиотека объектов, общих для всех приложений Office 2000. Здесь находятся классы, определяющие инструментальные панели — CommandBar и классы других общих объектов. Здесь же находятся классы, задающие Помощника (объект Assistant и все классы, связанные с ним). В частности, появился новый объект, которого не было в предыдущей версии — Мастер Ответов (Answer Wizard).
  • Stdole — библиотека классов, позволяющая работать с OLE — объектами и реализовать Автоматизацию.
  • VBA — библиотека классов, связанных с языком VBA. Здесь хранятся все стандартные функции и константы, встроенные в язык, классы Collection и ErrObject.
  • VBAProject — проект по умолчанию, связанный с документом. Классы, которые могут программистом создаваться в этом проекте, методы, свойства, — все это доступно для просмотра, так же, как и объекты классов, встроенных в стандартные библиотеки.

Если сравнить каркас рабочей книги Excel, например, с каркасом документа Word, то они отличаются тем, что в основе одного лежит библиотека Excel, в основе другого — библиотека Word. Эти библиотеки содержат специфические для данных приложений объекты. Что же касается интерфейсных объектов, объектов определяющих среду редактора VBA, автоматизацию, то здесь используются общие объекты. Библиотеки Office, Stdole, VBA — это общие для всех приложений Office 2000 библиотеки.

Замечу, что хотя каркас документа Excel не изменился в Office 2000 в сравнении с предыдущей версией, вместе с тем в объектной модели произошли довольно существенные изменения, появились новые объекты, новые свойства и методы у ранее существовавших объектов.

Объектная модель Excel

Прежде всего, несколько слов о том, как устроена объектная модель Excel и других приложений Office 2000. В этой модели объекты связаны между собой отношением встраивания. На нулевом уровне иерархии существует некоторый центральный объект, в который встроены другие объекты, составляющие первый уровень иерархии. В каждый из объектов первого и последующих уровней могут быть встроены объекты следующего уровня. Так это процесс продолжается. Таким образом, объекты в этой модели «толстые», поскольку в них встроено большое число других объектов. В особенности это касается объектов, стоящих на верхних уровнях иерархии.

Формально встраивание реализуется с помощью свойств объектов. Свойства могут быть как терминальными, не являющимися объектами, и так называемыми свойствами — участниками, которые возвращают объекты при их вызове.

Давайте перейдем к рассмотрению библиотеки объектов Excel 9.0 и начнем с центрального объекта этой библиотеки — Excel.Application.

Объект Excel Application

Объект Excel.Application задает приложение Excel. А посему свойства, методы и события этого объекта должны характеризовать приложение в целом. Понятно, что у этого объекта должно быть свойство Workbooks, возвращающее все открытые в приложении рабочие книги, свойство Windows, возвращающее открытые окна, свойства, такие как CommandBars, возвращающие объекты интерфейса, и другие подобные свойства. Методов и событий, характерных для всего приложения в целом, по-видимому, не так уж и много. Так что, казалось бы, структура этого объекта должна быть достаточно простой. Однако реально это не так, — у объекта Excel.Application очень большое число свойств, методов и событий, что не позволяет мне описать их полностью, да и нет в этом особого смысла. Объект Excel.Application, на мой взгляд, явно перегружен, многие его свойства и методы без всякого ущерба можно было бы исключить, поскольку они оперируют с объектами, стоящими на более низких уровнях иерархии и не имеют прямого отношения ко всему приложению в целом. Приведу лишь один пример. Первое по алфавиту свойство ActiveCell возвращает объект, задающий активную ячейку. Понятно, что речь идет об активной ячейке активной страницы активной рабочей книги. Непонятно только, зачем нужно было добавлять это свойство самому приложению. Вполне достаточно, чтобы им обладал объект WorkSheet, задающий страницу книги. Более того, если в момент вызова свойства ActiveCell нет активной страницы с ячейками, то возникнет ошибка, чего не происходит, если активную ячейку вызывает объект WorkSheet. Примеров подобной перегруженности объекта Application можно привести много. Я в своем описании объектов верхнего уровня не всегда буду упоминать такие свойства, полагая, что лучше рассказать о них там, где они необходимы по существу.

Общие объекты и Excel.Application

Давайте начнем рассмотрение со свойств объекта Excel.Application , возвращающих уже знакомые нам общие объекты:

Таблица 3.1. Общие объекты, доступные в Excel.Application

Свойство, возвращающее объект Назначение объекта Библиотека
Assistant Помощник, позволяющий организовать собственную диалоговую систему. Office
Answer Wizard Мастер Ответов, стоящий за спиной Помощника. Может использоваться при создании собственной справочной системы. Office
Com AddIns Коллекция компонент, общих для приложений Office 2000. Office
CommandBars Коллекция инструментальных панелей, без работы с которой не обойтись при создании собственного интерфейса документа Excel. Office
FileSearch Объект, используемый при поиске файлов. Office
Language Settings Объект, задающий языковые предпочтения, общие для приложений Office 2000. Office
Debug Объект, используемый при отладке программных проектов. VBA
VBE Корневой объект при работе с программными проектами. VBA

Все объекты, приведенные в этой таблице, играют важную роль при программной работе с документами Excel, как, впрочем, и с другими документами Office 2000.

Свойства — участники объекта

Рассмотрим теперь свойства — участники объекта Excel.Application, возвращающие объекты, специфические для Excel, Как я и предупреждал, я рассмотрю лишь основные свойства, которые действительно необходимы при работе с объектом Excel.Application.

Таблица 3.2. Основные свойства — участники

Свойство, возвращающее объект Назначение объекта
WorkBooks Коллекция открытых в Excel документов — рабочих книг. Основной объект, благодаря которому можно получить доступ к любому документу Excel и далее работать с объектами этой рабочей книги.
Windows Коллекция открытых окон во всех рабочих книгах. Дело в том, что одну и ту же рабочую книгу часто полезно открывать в нескольких окнах, что позволяет видеть разные участки рабочей книги. Коллекция Windows позволяет получить доступ к каждому такому окну. Чаще всего, свойство Windows используется при работе с объектом WorkBook, для объекта Application это один из примеров той перегрузки, о которой я упоминал выше.
WorkSheetFunction Объект — контейнер, в котором находятся многочисленные функции Excel, начиная от обычных математических функций и кончая функциями, применяемыми для решения задач статистики, прогноза, работы с датами и прочими.
AddIns Коллекция компонент, расширяющих возможности решения специальных задач в Excel.
AutoCorrect Знакомый по приложению Word объект, позволяющий задавать автоматическую корректировку набираемых текстов в ячейках Excel.
DefaultWebOptions Объект, позволяющий устанавливать параметры для документов Excel, сохраненных в виде Web-страниц. Схож с аналогичным объектом Word.Application, но имеет свою специфику.
Dialogs Объект Dialogs также как и три предыдущих объекта — AddIns, AutoCorrect, DefaultWebOptions относится к группе схожих объектов, встречающихся в каждом из приложений Office 2000, имеющих много общего, но имеющих и отличия, связанные со спецификой приложения. Также как и в Word, объект Dialogs задает коллекцию стандартных диалоговых окон, которые могут открываться в Excel, позволяя организовать диалог с пользователем.
Names Одно из перегруженных свойств, возвращающее коллекцию всех имен, используемых для отдельных ячеек и областей всех открытых документов Excel. Чаще всего, это свойство используется при работе с отдельной рабочей книгой или отдельной страницей.
ODBCErrors Коллекция объектов класса ODBCError. Элементы этой коллекции создаются автоматически источником ODBC-данных, если при выполнении запроса на получение данных возникли ошибки. Если ошибок не было, то и коллекция будет пустой.
OLEDBErrors Коллекция объектов класса OLEDBError. Аналогично предыдущей коллекции, ее элементы появляются при наличии ошибок в процессе работы с базой данных, когда используется интерфейс OLE DB.
RecentFiles Объект, относящийся к группе схожих объектов семейства Office 2000. Он задает коллекцию файлов, хранящих документы Excel последнего использования.

Основное содержание этой главы будет связано с рассмотрением коллекции Workbooks, а точнее с объектом Workbook и вложенными в него объектами. Но прежде чем двинуться далее, приведу все-таки краткий обзор тех вложенных в Excel.Application объектов, доступных на этом уровне, по сути, относящихся к нижним уровням иерархии объектной модели Excel:

  • Группа активных объектов — ActiveWorkbook, ActiveWindow, ActiveSheet, ActiveChart, ActiveCell, ActivePrinter, — возвращающих активную рабочую книгу, окно, активную рабочую страницу, диаграмму или ячейку, если таковые существуют в момент вызова соответствующего свойства. При отсутствии запрашиваемого активного объекта возникнет ошибка. Все эти объекты будут подробно рассмотрены, но чуть позже, когда мы спустимся вниз по иерархии объектов. Особняком стоит свойство, возвращающее активный принтер. Это свойство действительно имеет смысл связать с приложением. Заметьте, что объекты, стоящие на нижних уровнях иерархии, например, Workbook, этим свойством не обладают, так что добраться до принтера можно только через объект Application.
  • Группа коллекций и объектов Range, входящих в состав соответствующего активного объекта — Sheets, Charts, Rows, Columns, Cells, Range — возвращающие соответственно коллекции рабочих страниц, страниц диаграмм активной рабочей книги, объект Range, содержащий все строки, столбцы, ячейки или заданную область активной рабочей страницы. Также как и в случае вызова объектов предыдущей группы, при вызове этих свойств следует быть осторожным, поскольку возникает ошибка, если нет соответствующего активного объекта.
  • Свойство Selection возвращает выделенный объект в активном окне. Тип возвращаемого объекта зависит, от текущего выделения. Возвращается Nothing, если в активном окне нет выделенного объекта.
  • Свойство ThisWorkbook возвращает текущую рабочую книгу, содержащую выполняемый макрос, один из операторов которого и вызвал это свойство. Это свойство представляет единственный способ добраться до рабочей книги, содержащей компонент AddIn, изнутри макросов, составляющих этот компонент.

Терминальные свойства

Терминальных свойств много, и понятно почему. Приложение Excel, как и другие приложения Office 2000, могут быть настроены пользователем по своему усмотрению. Эту настройку можно выполнять вручную, а можно и программно. Настройка вручную большей частью проводится из меню Сервис | Параметры, используя возможности, предоставляемые различными вкладками в открывающемся окне параметров. Для программной настройки используются терминальные свойства, — в этом их основное назначение. Естественно, я не буду останавливаться на всех свойствах, — они просты. В ниже приведенном обзоре представлено выборочное описание некоторых групп терминальных свойств:

  • Группа свойств, задающих свойства приложения по умолчанию, — DefaultFilePath, DefaultSaveFormat, DefaultSheetDirection, — путь по умолчанию, формат по умолчанию, направление просмотра текста (слева направо или справа налево), задаваемое для некоторых языков. К этим же свойствам примыкает и ранее упоминавшееся свойство DefaultWebOptions.
  • Группа булевых свойств, позволяющих включить или выключить отображение на экране тех или иных элементов приложения — DisplayAlerts, DisplayCommentIndicator, DisplayFormulaBar, DisplayStatusBar и другие Display-свойства. Первое из этих свойств позволяет управлять выдачей на экран некоторых сообщений в процессе работы макросов, второе — отображать специальный индикатор при показе комментариев. Более часто приходится использовать управление показом панелей формул и статуса. Особенно часто приходится использовать эти свойства, когда документ Excel используется в специальных целях, например, при отображении различных бланков, когда внешний вид документа ничем не напоминает привычную электронную таблицу. Замечу, что используемое в этих случаях свойство DisplayGridLines, позволяющее отключать сетку, принадлежит объекту Windows, а не объекту Application.
  • Группа булевых свойств, позволяющих включить или выключить те или иные свойства — EnableAnimations, EnableAutoComplete, EnableCancelKey, EnableEvents, EnableSound. Первое из этих свойств позволяет управлять анимацией при добавлении или удалении строк и столбцов рабочего листа, второе — автозаполнением ячеек таблицы. Свойство EnableCancelKey не является булевым, оно принимает значения, заданные соответствующим перечислением, и позволяет управлять процессом прерывания программы при нажатии комбинации клавиш Ctrl+Break. Значение xlInterrupt, принятое по умолчанию, позволяет прервать выполнение макроса и перейти в режим отладки, где возможно пошаговое выполнение. Однако с помощью этого свойства можно задать разные режимы, как, например, передачу управления обработчику ошибок в момент прерывания. Пользоваться этим свойством следует осторожно, поскольку при зацикливании может возникнуть ситуация, когда нельзя будет прервать программу, не применяя грубых способов. Свойство EnableEvents позвол яет управлять включением событий объекта Application, а свойство EnableSound управляет включением звука в процессе работы приложений Office 2000.
  • Группа свойств, управляющих размерами главного окна приложения Excel — Height, Width, Left, Top, задающие высоту, ширину окна и координаты верхнего левого угла окна.
  • Многие другие свойства, позволяющие управлять курсором, скроллингом, характеристиками пользователя и многими другими параметрами так или иначе, характеризующими приложение Excel.

Методы объекта Application

Методов у объекта Excel.Application меньше, чем свойств, но и их около полусотни. Дадим краткий обзор, опять-таки, объединяя их по возможности в группы:

  • Метод ActivateMicrosoftApp(Index As xlMSApplication) позволяет активировать приложение Microsoft, заданное соответствующей константой в аргументе метода. Если приложение уже выполняется, то активируется текущий вариант. В противном случае открывается экземпляр приложения, и затем приложение активируется. Константы позволяют задать все основные приложения Office 2000, а также FoxPro, Project и некоторые другие приложения Microsoft.
  • Группа методов — DeleteCustomList, DeleteChartAutoFormat, AddCustomList, AddChartAutoFormat — позволяет удалять и добавлять пользовательские списки и пользовательские форматы к тем спискам и форматам, которые используются в самом приложении Excel.
  • Группа из пяти DDE-методов позволяет обеспечить динамический обмен данными между приложениями в соответствии со стандартом DDE. Сохранена для поддержки совместимости с предыдущими версиями Excel.
  • Методы, запускающие вычисления — Calculate, CalculateFull, приводят к перевычислению рабочих страниц всех рабочих книг. Метод CheckSpelling запускает проверку орфографии во всех рабочих книгах. Метод Evaluate(Name) преобразует имя объекта в сам объект. Эти методы объединяет то, что все они, по существу, являются методами объектов более низкого уровня иерархии — объектов Workbook, WorkSheet, Chat. Объект Application «наследует» эти методы у своих потомков, что позволяет распространять действие метода на все открытые рабочие книги. Следует понимать, что пользоваться вызовом этих методов объектом Application стоит в очень редких случаях. Опять-таки, можно говорить о некоторой излишней перегрузке объекта Application.
  • Группа Get-методов — GetCustomListContents, GetCustomListNum, позволяет вернуть содержимое пользовательского списка, получить его номер. Методы GetOpenFileName, GetSaveAsFileName позволяют получить имя файла, выбранное пользователем, открывая по ходу дела соответствующее диалоговое окно.
  • Группа On-методов, позволяющих запустить на выполнение некоторый макрос. Метод OnKey(Key, Procedure) позволяет запустить макрос, заданный вторым параметром метода, при нажатии пользователем комбинации клавиш, заданной первым параметром метода. Метод OnTime(EarliestTime, Procedure As String, [LatestTime], [Schedule]) позволяет запустить макрос, заданный вторым параметром метода, в указанное время. О схожем методе OnTime рассказывалось при описании методов объекта Word.Application. Методы OnRepeat(Text As String, Procedure As String) и OnUndo(Text As String, Procedure As String) позволяют указать макросы и текст, который будет появляться в пунктах «Повторить Выполнение» и «Отменить Выполнение» из меню Правка. Когда пользователь выберет соответствующий пункт меню, то запускается макрос, указанный втор ым параметром метода. Вот простой пример на применение этих методов:
Public Sub RepeatAndUndo()
   'Создание пунктов Повторить и Отменить в меню Правка 
   Call Application.OnRepeat("Hello", "Test")
   Call Application.OnUndo("7 to A1", "Write7")

End Sub

Public Sub Test()
   MsgBox ("Hi!")
End Sub

Public Sub Write7()
 Range("A1") = 7
End Sub

Процедура RepeatAndUndo создает соответствующие пункты меню Правка, а процедуры Test и Write7 будут вызываться при выборе пользователем этих пунктов меню. Замечу, что реально особой пользы от применения этих методов не вижу, так как при любых действиях пользователя произойдет обновление этих пунктов меню.

  • Методы Repeat и Undo близки по духу к рассмотренным только что методам. Они позволяют повторить или отменить последнее действие пользователя при его работе вручную.
  • Еще одним важным методом, позволяющим запускать макрос на выполнение, является метод Run(Macro, Arg1, Arg2, …). Метод Run позволяет выполнить макрос (процедуру или функцию) проекта рабочей книги или функцию из DLL или XLL. Макрос, запускаемый на выполнение, может находиться в той же рабочей книге, что и макрос, вызвавший метод Run, но может принадлежать и другой рабочей книге. В этом случае, естественно, проекты должны быть связаны по ссылке и в проекте, который вызывает макрос другого проекта, должна быть установлена ссылка на вызываемый проект. При вызове макросу могут быть передано произвольное число аргументов, все они передаются по значению, так что, заметьте, нельзя передать макросу сам объект, а только его значение, задаваемое свойством Value. Метод Run в свою очередь возвращает значение, являющееся результатом выполнения макроса. Приведу простой пример, демонстрирующий все особенности вызова метода Run:

Проекту документа BookOne я дал имя BookOneProject. В этом проекте объявлена глобальная переменная

Option Explicit
Public GlobalZ As Variant

В модуль с именем ModuleOne этого проекта я поместил описание процедуры PlusXY и функции Plus1. Они выполняют простые и понятные без комментариев действия.

Public Function Plus1(ByVal X As Integer) As Integer
   Plus1 = X + 1
End Function

Public Sub PlusXY(ByVal X As Integer, Y As Integer)
   GlobalZ = X + Y
End Sub

В этом же модуле находится и процедура testrun, демонстрирующая вызовы метода Run.

Public Sub testrun()
   'Запуск на выполнение функции и процедуры,
   'находящихся в том же проекте
Dim z As Integer
   z = Application.Run("Plus1", 7)
   Debug.Print "z = ", z
   z = Application.Run("PlusXY", 5, 7)
   Debug.Print "GlobalZ = ", GlobalZ, "z = ", z
End Sub

Вот результаты ее выполнения:

z = 8 
GlobalZ = 12   z = 0

В проекте другой рабочей книги Excel с именем BookTwo я установил ссылку на проект BookOneProject и в один из модулей поместил процедуру testrun1, вызывающую макросы проекта BookOneProject:

Public Sub testrun1()
   'Запуск на выполнение функции и процедуры,
   'находящихся в другом проекте BookOneProject,
   'на который установлена ссылка.
   Dim z As Integer
   z = Application.Run("BookOneProject.Module1.plus1", 7)
   MsgBox ("z= " & z)
   Call Application.Run("BookOneProject.Module1.plusXY", 5, 7)
   MsgBox ("GlobalZ = " & BookOneProject.GlobalZ)
End Sub 

И в этом варианте метод Run успешно справляется с вызовом макросов другого проекта. Конечно, в данном примере вместо того, чтобы применять метод Run, можно было бы непосредственно вызвать ту же функцию Plus1. Но, надеюсь, Вы понимаете, что истинная ценность метода Run в том, что имя выполняемого макроса может быть передано ему в качестве параметра, так что в зависимости от ситуации он может запускать разные макросы. Но давайте закончим с примером и вернемся к рассмотрению других методов объекта Excel.Application.

  • Метод Goto([Reference], [Scroll]) не выполняя макроса, позволяет перейти к его рассмотрению. Другое, может быть, основное назначение метода состоит в том, чтобы перейти в заданную точку рабочей книги Excel. Чтобы перейти к рассмотрению макроса, параметр Reference должен быть строкой, задающей имя макроса. Для перехода в заданную область документа параметр Reference задается объектом Range. Булев параметр Scroll, имеющий значение true, обеспечивает прокрутку области так, чтобы заданная точка находилась в левом верхнем углу области просмотра. Главное, на что стоит обратить внимание, — метод Goto позволяет осуществлять переходы между документами. Вот пример макросов из документа BookTwo, осуществляющих соответственно переходы к заданной области и макросу документа BookOne.
    Public Sub GotoRange()
       'Переход к заданной области другого документа
       Application.Goto Workbooks("BookOne.xls").Worksheets("Лист1").Range("A20"), True
    End Sub
    
    Public Sub GotoMacro()
       'Переход к заданному макросу в другом проекте
       Application.Goto "BookOneProject.Module1.testrun"
    End Sub	
  • Метод MacroOptions ([Macro], [Description], [HasMenu], [MenuText], [HasShortcutKey], [ShortcutKey], [Category], [StatusBar], [HelpContextID], [HelpFile]) — это еще один метод, связанный с макросами. Он позволяет задать для макроса, указанного первым параметром, различные характеристики — описание, горячие клавиши, раздел справки, связанный с данным макросом, и другие свойства.
  • Метод RecordMacro([BasicCode], [XlmCode]) — также предназначен для работы с макросами. Он позволяет добавить некоторый программный код в макрос, создаваемый инструментом MacroRecorder. В момент вызова метода MacroRecorder должен быть включен и записывать макрос в модуль, не являющийся активным, другими словами, нельзя произвести запись в тот модуль, макрос которого вызвал метод RecordMacro.
  • Метод Wait(Time) As Boolean — это последний из описываемых мной методов объекта Excel.Application, входящих в большую группу методов, предназначенных для работы с макросами. Он позволяет организовать задержку вычислений на заданное время, указанное параметром метода. В приведенном ниже примере метод используется, чтобы открыть и показать пользователю некоторую форму, а затем закрыть ее по истечении заданного времени. Этот прием можно использовать в играх, целью которых является проверка внимательности. Вот текст соответствующего макроса:
    Public Sub WaitSomeTime()
       'Открывает форму на ограниченное время
       MsgBox ("Форма будет показана на 10 секунд!")
       FlyForm.Show
       Application.Wait (Now + TimeValue("0:00:10"))
       FlyForm.Hide
    End Sub	

Взгляните, как выглядит сама форма.

Форма FlyForm, открытая на
Рис. 3.1.  Форма FlyForm, открытая на «мгновение»

Привожу рисунок этой формы только для того, чтобы пояснить, какая цель преследуется в этом примере. Я предполагал, что при открытии формы пользователь должен успеть в предоставленное ему время ввести два числа в поля X и Y , нажать кнопку, производящую вычисления и запомнить полученный результат. Однако мои намерения не осуществились, и вот по каким причинам. Если форма имеет статус модальной формы, то выполнение макроса приостанавливается до той поры, пока пользователь не закроет форму. Так что в этом случае у пользователя время на работу с формой не ограничено. Это я понимал. Если же форма имеет статус немодальной формы (свойство ShowModal = False), то форма действительно будет открыта в течение 10 секунд. Но в этом случае пользователь не сможет работать с этой формой, вводить значения в поля ввода и нажимать командную кнопку. Хуже всего то, что при попытке ввода значений в поля формы они фактически будут попадать в произвольное место программного текста и порти ть сам проект. Так что следует быть осторожным в подобной ситуации.

  • Метод Help([HelpFile], [HelpContextID]) позволяет вызвать справочное руководство, указав при необходимости и соответствующий раздел в этом руководстве. Можно вызывать как стандартную справочную систему, — в этом случае не нужно задавать аргументы при вызове метода, либо, что чаще бывает, собственную справочную систему. Первый параметр метода задает имя файла, хранящего справочное руководство. Этот файл может иметь уточнение «chm» , если руководство подготовлено с помощью инструментария HTML Help Workshop, или иметь уточнение «htm», если справочная система создана с помощью инструментария Microsoft WinHelp.
  • Методы Intersect(Arg1 As Range, Arg2 As Range, …)As Range и Union(Arg1 As Range, Arg2 As Range, …)As Range возвращают в качестве результата объект Range, задающий прямоугольную область, представляющую соответственно пересечение или объединение областей аргументов, которых должно быть не менее двух и не более 30.
  • Метод InputBox, по существу, эквивалентен одноименной функции из библиотеки VBA и позволяет организовать диалог с пользователем и принять введенное им значение. Функция InputBox является одной из наиболее широко применяемых функций, и примеров ее вызова приводилось достаточно много. Не обойтись без нее и в примерах этой книги. Что вызывать метод InputBox объекта Application или функцию InputBox библиотеки VBA — дело вкуса.
  • Метод Volatile([Volatile]) позволяет включить или выключить принудительное вычисление для функций, вызываемых в формулах рабочего листа. Метод вызывается непосредственно в функции, которую предполагается пометить. Булев параметр Volatile помечает функцию, как принудительно вычисляемую, если он имеет значение true. Это значение является значением параметра по умолчанию.

Я рассмотрел большую часть методов объекта Application. Замечу, что в предыдущей версии этих методов было значительно больше, поскольку многие функции Excel — математические и прочие были доступны на этом уровне. Теперь, как и положено, все они находятся в специальном контейнере WorkSheetFunction.

Оглавление Вперёд

VPS в 21 локации

От 104 рублей в месяц

Безлимитный трафик. Защита от ДДоС.

Виртуальные серверы VPS/VDS в России, Европе и США!

Промокод citforum — скидка 10% на заказ сервера!

☁️ Виртуальные серверы от 95 ₽

🖥 Хостинг сайтов PHP от 25 ₽

💰 Скидка 15% по промокоду CITFORUM на первый платёж!


Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPSVDS

Новости мира IT:

  • 14.04 — Компания AMD представила открытый проект openSIL для разработки прошивок
  • 14.04 — «Роскосмос» создаст систему связи с прямым подключением смартфонов к спутникам
  • 14.04 — Представлен новый суперкомпьютер Gaea C5 производительностью более 10 Пфлопс для исследования климата
  • 14.04 — После обновления сети курс Ethereum взлетел до максимума за 11 месяцев — биткоин тоже вырос
  • 14.04 — Представлен первый в мире полностью перерабатываемый нетоксичный транзистор
  • 14.04 — Европейский совет по защите данных проведёт расследование работы ChatGPT
  • 14.04 — Роскомнадзор заблокировал 135 млн мошеннических звонков
  • 14.04 — Google представила нейросеть Med-PaLM 2 для помощи медработникам в постановке диагноза
  • 13.04 — Android или iOS? А может, Flutter? Всё и сразу на Mobius 2023 Spring!
  • 13.04 — В России создали первую отечественную базовую станцию стандарта 5G — до 1,4 Гбит/с
  • 13.04 — Intel продала свой бизнес по выпуску серверов
  • 13.04 — Совкомбанк и Фонд «Сколково» проведут командный онлайн-хакатон по разработке HR-платформы
  • 13.04 — Обанкротившаяся криптобиржа FTX восстановила $7,3 млрд активов и планирует перезапуск
  • 13.04 — Apple перейдёт на использование только переработанного кобальта во всех батареях к 2025 году
  • 11.04 — Состоялся релиз Firefox 112
  • 11.04 — Вышел релиз FreeBSD 13.2 с поддержкой Netlink и WireGuard
  • 11.04 — В WhatsApp можно будет войти в аккаунт на четырёх устройствах одновременно
  • 11.04 — Google исправила более 60 уязвимостей Android
  • 11.04 — Google оштрафовали на $32 млн за недобросовестную конкуренцию на рынке мобильных игр в Южной Корее
  • 11.04 — Российский рынок ЦОД продолжает расти, но темпы развития замедлились

Архив новостей

  • Корпоративная мобильная связь от Телфин
  • HOSTKEY: серверы и облачные решения для вашего бизнеса

Like this post? Please share to your friends:
  • Объектно ориентированное программирование excel vba
  • Объектная смета скачать в excel
  • Объектная смета пример excel
  • Объектная модель документа excel
  • Объектная модель microsoft excel