Структура объектной модели microsoft excel. Объектная модель программы MS EXCEL. Простые и сложные переменные

Новости 12.04.2019

Sub MainProcedure()

Call GetProblemSize

Sub GetProblemSize()

ReDim Visited(Ncities)

ReDim Route(Ncities + 1)

Sub Initialize()

Dim I As Integer

Route(Ncities + 1) = 1

Visited(1) = True

For I = 2 To Ncities

Visited(I) = False

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

Sub ИмяПроцедуры (Параметры)

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

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

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

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

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

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

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

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=s+platezh(i)/(1+procent)^((god(i)-god(1))/365)

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

8. Объявление переменных. Объявление переменных в модулях и процедурах. Область действия переменных и процедур. Пример передачи в процедуру аргументов.

Dim I As Integer, j As Integer, k As Integer

Чтобы не забывать объявить переменные Tools/Options/ вкл Editor, где установить флажок Require Variable Declaration.



Option Explicit – общая область. Этот оператор будет контролировать описание переменных. Существует очень важный тип переменных, которого в VB не было. Это переменные объекта. Dim A As Object. Частный случай: Dim A As Range. Например, мы хотим обратиться к диапазону ячеек в течение процедуры. D

Dim SRange As Range

Set SRange=ActiveWorkBook.WorkSheets(“Продажи”).

Range(“SalesRange”)

SRange.Font.Size=14

Ключевое слово Set используется только при присвоении значения объектной переменной.

Для переменных определяется область видимости. Переменные могут быть: глобальные (для объявления используется Public) и локальные (используется оператор Private, Dim). Переменная типа Public – переменная уровня модуля, Dim – уровня процедуры. Переменная, определяемая в модуле оператором Dim, может быть переопределена этим же оператором внутри процедуры, принадлежащей этому модулю.

Передача в процедуру аргументов. Можно передавать аргументы (имя, фамилию) из процедуры Main в процедуру DisplayName. Тогда процедура Main называется главной, а DisplayName – вызываемой. В этом случае переменная FirstName и LastName не объявляются переменными уровня модуля, а объявляются как локальные переменные процедуры Main.

Sub Main ()

Dim FirstName As String, LastName As String, I As Integer

FirstName=Range(“Names”).cells(i, 1)

LastName= Range(“Names”).cells(i, 2)

Call DisplayName

Sub DisplayName

Dim FulllName As String

FulllName= FirstName+ LastName

MsgBox “Полное имя сотрудника”_&_ FulllName

9. Встроенное диалоговое окно сообщения. Пример функциии оператора MsgBox . Существует несколько типов диалоговых окон, которые необходимы для поддержания в программе интерактивного режима работы конечного пользователя (вывод сообщений пользователю, прием и интерпритация указаний, введенных пользователем и т.д.). Окно сообщений обозначается MessageBox (MsgBox) и окно ввода InputBox. Их можно рассматривать как фукнции и как оператор. Окно MsgBox- окно сообщения. Оно не требует проектирования и вызывается из программы командой MsgBoх и создается с помощью функции MsgBox(). Она имеет следующий синтаксис: MsgBox (Promt [, buttons] [,title,helpFile], ), где promt - обязательный параметр, эта строка в окне сообщения. Ее максимальная длина 1024 символа. Параметр Buttons не обязателен, его значение - целое число, равное сумме значений, определяющих наличие кнопок в окне сообщения. По умолчанию равно 0. Параметр title- заголовок окна сообщений. Help file – необязательный, ссылка на файл в справочной системе и на конкретное место в этом файле. пример



В зависимости от выбора кнопок окна MsgBox диалоговое окно возвращает одно из значений.

10. Встроенное диалоговое окно ввода. Пример функцииInputBox. Существует несколько типов диалоговых окон, которые необходимы для поддержания в программе интерактивного режима работы конечного пользователя (вывод сообщений пользователю, прием и интерпритация указаний, введенных пользователем и т.д.). Окно ввода информации InputBox требуется только как функция. Часто необходимо осуществить не только набор действия, но и ввести определенную информацию, которая будет восприниматься программой. Для этого используется функция InputBox. Синтаксис: InputBox (ptomt, , , , , context])

Promt – обязательная строка, которая выдается в окне сообщения, 1024 символа Title – необязательный, заголовок окна сообщения Default - строка в текстовом поле, если его нет, то строка пуста Xpos,Ypos- позиция левого верхнего угла ввода на экран Helpfile- ссылка на файл справочной информации. В этом окне всегда стоят по умолчанию две кнопки: ОК и Саncel. Пример:

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

13. Основные свойства и методы объекта Range. Примерыпрограммных кодов . Объект Range одновременно является и объектом и коллекцией. Рассмотрим наиболее важные свойства и методы объекта Range: 1. Свойство Address – возвращает адрес диапазона в виде строки. «В2:Р4» А=Range(“Sales”).Address “В2:Р4”

Range (“A1:A10”).Cells(3) ‘A3

Range (“A1:D10”).Cells(3, 4) ‘D3

Range (“A1”). Offset(3, 4) – E4

4. Font – выступает как в роли объекта, так и в роли свойства. В данный момент выступает как свойство, а как объект имеет свойства: Size, Name, Bold, Italic.

5. Horizontal Alignment – горизонтальное выравнивание ячеек в диапазоне. Свойства: xlCenter – по центру; xlLigh – по правому краю; xlLeft – по левому краю.

7. Name – возвращает имя диапазона. Это свойство позволяет задать имя диапазона в программном коде.

Range (“A1:D10”).Name=”Sales”

8. Value – возвращает значение в ячейку диапазона(используется относительно только одной ячейки диапазона).

Range (“A5”). Value=«Отчет о командировке»

Методы диапазона: Clear – удаляет содержимое и форматирование диапазона ячеек. ClearContents – удаляет только содержимое. Copy – копирует содержимое одного диапазона в другой. В этом случае он используется с единственным аргументом CopyDestination. C его помощью указывается, куда вы копируете.

Range(“B4:G25”). CopyDestination:=Range(“E4:F25”). Копируются формулы и содержимое. В случае, когда надо скопировать только числовые значения, а не формулы, используется метод PastSpecial. Сначала вы копируете в буфер обмена, затем переносите в диапазон. 1)Range(“B4:G25”).Copy 2)Range(“E4:F25”).PastSpecial Paste:=xlPasteValue

Select – выделение диапазона.

Sort – Применяется для сортировки диапазона ячеек. Key1 – по какому столбцу будет сортировка в диапазоне. Order1 – порядок сортировки(по возрастанию, по убыванию). Header – «да», «нет» (Если «да», то заголовок в сортировке участия не принимает, если «нет», участвует). Range(“A1:F25”).Sort

Key1:=Range(“C2”)

Order1:=xlAscending

Правила использования объектов Excel в програмном коде. Примеры программных кодов с их использованием.

14. Способы указания диапазонов в вба. Примеры программных кодов с указанием диапазонов. В процессе составления программного кода нужно уметь правильно использовать ссылку на диапазон. Рассмотрим следующие способы: 1. Использование адреса Range(“A1:B4”). 2. Применение имени диапазона Range(“Sales”). 3. Назначение переменной с именем диапазона NSales=Range(“Информация о продажах”).Name. 4.Использование свойства Cells Range(“A1:A10”).Cells(3) – A3

Range(“A1:D10”).Cells(3, 4) – D3

5.Настройка свойства Offset. Свойство имеет 2 аргумента. Когда указывается Offset для диапазона, то в роли диапазона выступает адрес только одной ячейки. Range(“A5”).Offset(3, 4) – E8

6. Указание левого верхнего и нижнего правого угла диапазона. Range(Range(“C1”), Range(“D10”)).

7.Применение свойства End. Для выделения диапазона относительно которого известен только левый верхний угол, можно воспользоваться свойством End. Оно указывает на нижний правый угол диапазона.

With Range(“A1”)

Range(.Cells(1, 1),.End(xlRight).End(xlDown)).Select

With Range(“A1”)

Range(.Offset(1, 1),.End(xlRight)).Name=”Sales”

Range(.Offset(2, 1),.End(xlDown)).Name=”Region”

Range(.Offset(2, 2),.End(xlRight)).End(xlDown).Name=”NameSales”

Работа с массивами. Оператор Option Base. Динамическая модель индексации и оператор ReDim. Примеры использования этих операторов. Функция управления массивами Array. Пример использования.

По аналогии с работой с информацией в списках Excel, массивы тоже представляют собой списки, в которых каждый элемент имеет свой индекс. Элементы массива воспринимаются программой в виде обычных переменных, но представленных в виде индексированного списка. В вба массивы используются для обработки списков, поскольку массивами управлять в программном режиме гораздо проще, чем списками. Правила работы с массивами. Option Base – определяет нижнюю границу изменения индекса в массиве. Например, Option Base1 – нижняя граница – 1. Эту строку в программном коде пишут в общей области модуля следом за оператором Option Explicit.

В большинстве экономических задач при написании программного кода невозможно заранее узнать количество элементов. Для этого существует возможность вначале программного кода не указывать при объявлении массива точного размера. (Dim ProdCode () As Integer, NProducts As

Integer.) Затем в теле процедуры, когда уже известно необходимое количество элементов массива, можно воспользоваться оператором ReDim, который выделяет для массива строго необходимый объем памяти. With ActiveWorkBook.WorkShits(«Продажи»).Range(“A3”)

NProducts=Range(.Offset(1,0),.End(xlDown)).

ReDim ProdCode(NProducts),UnitPrise(NProducts)

For i=1 to NProducts

ProdCode(i)=.Offset(i,0)

UnitPrise(i)=.Offset(i,1)

Оператор ReDim относительно конкретного массива может использоваться в программном коде столько раз, сколько необходимо. Единственной проблемой является то, что при таком использовании массива, все, что было в массиве, теряется. Чтобы этого избежать, нужно в записи оператора записать ключевое слово Preserve. (ReDim Preserve Sum(NS)). Обычно продолжением данного программного кода является размещение данных, взятых из ст. А и В списка в массивах ProdCode и UnitPrice. Для переноса данных из столбцов списка в массив, нужно организовать цикл. Если нужно перенести данные в столбцы списка, размещенного на рабочем листе:

(NFound – количество найденных записей)

For i=1 to NFound

With Range(“E3”)

Offset(j, 0)=ProdCodeFound(j) ‘код товара

Offset(j, 1)=Quontity(j) "количество товаров

Offset(j, 2)=DollarsTotal(j) ‘стоимость продукции

Рассмотрим конструкцию Array. Рассмотрим работу этой функции на примере. Данная функция используется для заполнения массива. Ее применении е рассмотрим в программе «Ипотечный кредит».

Sub Array Function ()

Dim Days As Variant

Days=Array(«Пн», «Вт», «Ср», «Чт», «Пт», «Сб», «Вс»)

MsgBox “Первый день недели: ” & Days(1)

Ключевое слово Array, после которого указывается список в скоках, используется для заполнения значениями переменной Days. Эта переменная – обычный массив, но в операторе Dim она указывается как обычная переменная типа Variant, а VBA самостоятельно с использованием функции Array определяет эту переменную как массив.

16. Модульная структура приложения на примере программного кода задачи, определяющий оптимальный маршрут перемещения дистрибьютора фирмы. Примериспользования переменных уровня модуля . При создании больших процедур возникают такие сложности, как сложность изучения, отладки, повторного использования. Намного предпочтительнее создавать модульные приложения, которые представляют собой набор относительно небольших процедур, каждая из которых выполняет небольшую подзадачу. Создается главная процедура MainProcedure, а из нее с помощью оператора Call вызываются другие процедуры.

Sub MainProcedure()

В качестве примера рассмотрим программный код задачи, определяющий оптимальный маршрут перемещения.

Dim Ncities As Integer, Visited() As Boolean, Route() As Integer, TotDist As Integer

Sub GenDistances()

Dim I As Integer, j As Integer, Ncities As Integer

With Range("DistMatrix")

Ncities = .Rows.Count

For I = 1 To Ncities - 1

For j = I + 1 To Ncities

Cells(I, j) = Int(Rnd * 100) + 1

For I = 2 To Ncities

For j = 1 To I - 1

Cells(I, j) = .Cells(j, I)

Sub MainProcedure()

Call GetProblemSize

Call PerformHeuristic

Call DisplayResults

Sub GetProblemSize()

Ncities = Range("DistMatrix").Rows.Count

ReDim Visited(Ncities)

ReDim Route(Ncities + 1)

Sub Initialize()

Dim I As Integer

Route(Ncities + 1) = 1

Visited(1) = True

For I = 2 To Ncities

Visited(I) = False

Sub PerformHeuristic()

Dim Step As Integer, I As Integer, NowAt As Integer, NextAt As Integer, MinDist As Integer

For Step = 2 To Ncities

For I = 2 To Ncities

If I <> NowAt And Visited(I) = False Then

If Range("DistMatrix").Cells(NowAt, I) < MinDist Then

MinDist = Range("DistMatrix").Cells(NowAt, NextAt)

Route(Step) = NextAt

Visited(NextAt) = True

TotDist = TotDist + MinDist

TotDist = TotDist + Range("DistMatrix"). Cells(NowAt, 1)

Sub DisplayResults()

Dim Step As Integer

For Step = 1 To Ncities + 1

Range("B19").Offset(Step, 0) = Route(Step)

MsgBox "Общее растояние:" & TotDist, vbInformation, "общее расстояние"

Использование переменных уровня модуля. Рассмотрим программу, которая иллюстрирует использование переменных уровня модуля.

На рабочем листе Excel создадим список и дадим ему имя – Name.

Dim FirstName As String, LastName As String

Dim I As Integer

FirstName=Range(“Name”).Cells(i, 1)

LastName=Range(“Name”).Cells(i, 2)

Call DisplayName

Sub DisplayName ()

Dim FullName As String

FullName=FirstName+LastName

MsgBox “Полное имя сотрудника: ” & FullName

17. Разраотка пользовательского интерфейса: форма как пользовательское окно диалога. Разработка формы на примере формы «Сведения о товарах». Отображение пользовательской формы. Пользовательское окно диалога – это форма, содержащая элементы управления, включая командные кнопки, переключатели, текстовые поля и другие. Оно обеспечивает пользователю ввод информации, требуемой для работы приложения.Рассмотрим типичный пример формы, которая часто встречается в приложениях.

В форме присутствуют 3 обработчика событий:

1. UserForm_Initialize

2. OkButton_Click

3. CanselButton_Click

В этом приложении при открытии формы нужно добиться следующего поведения: переключатели Москва и Поезд должны быть активны, флажок Скоропортящийся установлен, а Хрупкий – сброшен, список CostumerList должен быть заполнен исходными данными. При работе со списком, его можно заполнить разными способами. Например, заполнить его данными, расположенными в ячейках рабочего листа. Для этого зоздать диапазон на рабочем листе, дать ему имя(Name - Costumer). При заполнении списка воспользоваться AddItem. Перед тем, как писать код для события Initialize, рассмотрим свойства элементов управления: пользовательская форма – Ипотека; текстовое поле – ProductBox; переключатели – MoscowOption, VoronegOption, TrainOption, TruckOption; флажки – PerishBox, FragilBox; список – CostumersList.

Dim cell As Variant

ProductBox = " "

MoscowOptions.Value = True

TrainOptions.Value = True

PerishBox = True

FragilBox = False

Существует другой способ заполнения списка. Свойство RowSource, откроется окно, из которого поочереди надо внести элементы.

Отображение формы. В отличии от VB в VBA форма в момент запуска приложения автоматически на экране не появляется. Для вызова формы на рабочий лист нужно применить метод Show. Для этого на рабочем листе создать кнопку, которая выводит форму на рабочий лист, и написать код:

Sub Кнопка1_Щелкнуть ()

Ипотека. Show

18. Обработка событий формы: создание кода обработки событий UserForm_Initialize, CanselButton_Click на примере обработки этих событий для пользовательской формы «Сведения о товарах».

1. UserForm_Initialize

2. OkButton_Click

3. CanselButton_Click

1 разработчик определяет внешний вид формы при открытии, а остальные обеспечивают реакцию на щелчок по кн. «Ок» и «Отмена».

Код обработчика UserForm_Initialize.

В этом приложении при открытии формы нужно добиться следующего поведения: переключатели Москва и Поезд должны быть активны, флажок Скоропортящийся установлен, а Хрупкий – сброшен, список CostumersList должен быть заполнен исходными данными. Для заполнения списка на рабочем листе создадим диапазон и дадим ему имя Costumers. В программном коде воспользуемся методом AddItem. Перед тем, как писать код для события Initialize, рассмотрим некоторые свойства элементов управления: пользовательская форма – Ипотека; текстовое поле – ProductBox; переключатели – MoscowOption, VoronegOption, TrainOption, TruckOption; флажки – PerishBox, FragilBox; список – CostumersList.

Private Sub UserForm_Initialize()

Dim cell As Variant

ProductBox = " "

MoscowOptions.Value = True

TrainOptions.Value = True

PerishBox = True

FragilBox = False

For Each cell In Range("Customers")

CustomersList.AddItem cell.Value

Для кнопки «отмена» запишем следующий код:

Private Sub CanselButton_Click ()

Unload.Me – этот метод выгружает форму из оперативной памяти и убирает ее с экрана.

19. Обработка событий формы: создание кода обработки события OkButton_Clickна примере обработки этого события для пользовательской формы «Сведения о товарах». Событие представляет собой действие, распознаваемое объектом, для которого можно запрограммировать отклик.

Рассмотрим форму «Сведения о товарах». В ней присутствуют 3 обработчика событий:

1. UserForm_Initialize

2. OkButton_Click

3. CanselButton_Click

1 разработчик определяет внешний вид формы при открытии, а остальные обеспечивают реакцию на щелчок по кн. «Ок» и «Отмена».

Код процедуры OkButton_Click. Обычно данный обработчик событий используется для сохранения данный, введенных в элементы управления. Как правило, введенная информация в элементы управления заносится в общедоступные переменные, которые определены в модуле, далее эти переменные используются в программных кодах модуля. ProductСode – код, введенный в поле; Region – пункт отправления; Shipping – транспорт; IsPerish – скоропортящийся; IsFragil – хрупкий; Customers – смисок.

Dim ProductCode As Integer, Region As String, Shipping As String, IsPerish As Boolean, IsFragile As Boolean, Customers As String

Private Sub OkButton_Click()

If .Value = " " or not IsNewmeric(.Value) Then

MsgBox "Код товара не введен или не числовой"

ProductCode=ProductBox. Value

If ProductCode < 1 Or ProductCode > 1000 Then

MsgBox "Код товара должен быть в диапазоне от 1 до 1000"

SetFocus ‘ставит курсор в поле

Exit Sub ‘выход из процедуры

If TrainOption.Value = True Then

Shipping = "Poezd"

Shipping = "Gruzovik"

If MoscowOption.Value = True Then

Region = "Moscow"

Region = "Voroneg"

IsPerish = PerishBox.Value

IsFragile = FragilBox.Value

With CostomerList ‘работа со списком

If .ListIndex <> -1 Then

Customers = CustomersList.Value

MsgBox "Элемент в списке не выбран"

20. Структура принятия решения If-Then-Else

Условный оператор If-Then-Else изменяет порядок выполнения про-граммы в зависимости от результатов проверки некоторого условия.

Sub LookUpPrice()

ReDim ProdCode(Nproducts)

ReDim UnitPrice(Nproducts)

For i = 1 To Nproducts

ProdCode(i) = .Offset(i, 0)

UnitPrice(i) = .Offset(i, 1)

ReguestedCode = InputBox("Введите код товара (большая латинская буква и 4 цифры)")

Found = False

For i = 1 To Nproducts

If ProdCode(i) = ReguestedCode Then

Found = True

ReguestedPrice = UnitPrice(i)

Exit For

If Found Then

MsgBox "Товар с кодом" & ReguestedCode & " стоит " & Format(ReguestedPrice, "0,00р."), vbInformation, "Товар не найден"

MsgBox "Товара с кодом " & ReguestedCode & " нет в списке ", vbInformation, "Товар не найден”

21. Дополнительное условие ElseIf

Средствами структуры принятия решенья If-Then-Else можно орга-низовать выполнение операторов в зависимости от соблюдения опреде-ленного условия. Рассмотрим другой вариант ее использования, на этот раз с ключевым словом ElseIf. Программа Proc31 отображает запрос на ввод пароля. Если пароль введен правильно, программа предоставляет пользо-вателю определенные возможности работы с рабочей книгой и сообщает ему об этом.

Sub Proc31_IfThenElseIf ()

Dim Password As String, ws As WorkSheet

Password = GetPassword

If Password = “level1” Then

For Each ws In ActiveWorkbook.WorkSheets

ws.Visible = True

MsgBox “Вы получили доступ ко всем листам книги.”

ElseIf Password = “level2” Then

ActiveWorkbook.Worksneets (1). Unprotect

MsgBox “Вы получили доступ только к первому листу рабочей книги.”

ElseIf Password = “level3” Then

ActiveWorkbook.Worksneets (1). Visible = True

MsgBox “Вы получили доступ только для чтения содержимого первого листа рабочей книги.”

MsgBox “Пароль не корректен. Повторите ввод пароля.”

Function GetPassword ()

В Proc31 ключевое слово Elself с последующим условием использу-ется дважды. Новое условие вносит в порядок выполнения команд допол-нительные изменения, если проверка первого условия закончилась неуда-чей. В Proc31 первое условие указано сразу за ключевым словом If. В нем проверяется равенство переменной Password строке ”levell”. Если пере-менная не равна строке, VBA переходит к первому ключевому слову Elself, где проверяет следующее условие – равенство переменной Password строке “level2”. Начиная с этого момента, программа использует только новое ус-ловие, “забывая” о старом. Если равенства опять нет, управление перехо-дит к следующему ключевому слову Elself и т. д.

В строке 3 процедуры Proc31 вызывается функция GetPassword, в ко-торой использованы новые элементы. Обратимся к ней еще раз.

Function GetPassword ()

GetPassword = Lcase (InputBox(“Enter Password:”.” Password”))

Здесь во второй строке заданы обращения к двум встроенным функ-циям VBA-Lcase и InputBox. Первая преобразует все буквы переданной в нее строки в строчные. Вторая выводит на экран диалоговое окно с запро-сом на ввод данных пользователем. У этой функции есть несколько необя-зательных аргументов, из которых нас интересуют только первые два. Один из них – строка, отображаемая в окне над полем для ввода. Второй содержит строку заголовка диалогового окна. При вызове функции Input-Box на экране появляется диалоговое окно с заданными заголовком и тек-стом приглашением, кроме того оно содержит пустое поле, в котором пользователь может ввести данные. Значение, возвращаемое InputBox, за-висит от того, какую кнопку щелкнет пользователь. Если это – ОК, воз-вращается введенная строка, если – Отмена (Cancel), то пустая. В нашем примере буквы этой строки передаются в функцию Lcase, которая преоб-разует их в строчные. В блоке, начинающемся сразу за ключевым словом If, помещен цикл For-Each-Next (он подробно описан ниже в разделе "Управляющая структура For-Each-Next”). В этом цикле перебираются все листы активной рабочей книги, с каждым из которых выполняются два действия – свойству Visible присваивается значение True и вызывается ме-тод Unprotect. Первое действие позволяет пользователю видеть лист, вто-рое – снимает с листа защиту паролем. У метода Unprotect есть один аргу-мент – строка с паролем. Но в данном случае пароль для защиты листов мы не использовали, поэтому Unprotect вызван без аргументов. В других бло-ках программы свойство Visible и метод Unprotect вызываются выборочно, в зависимости от введенного пароля.

22. Управляющая структура For-Next

Она позволяет выполнять несколько команд заданное число раз.

Sub LookUpPrice()

Dim ProdCode() As String, UnitPrice() As Currency, ReguestedPrice As Currency, Nproducts As Integer, i As Integer, Found As Boolean, ReguestedCode As String

With ActiveWorkbook.Worksheets("Коды товаров”).Range("A3")

Nproducts = Range(.Offset(1, 0), .End(xlDown)).Rows.Count

ReDim ProdCode(Nproducts)

ReDim UnitPrice(Nproducts)

For i = 1 To Nproducts

ProdCode(i) = .Offset(i, 0)

UnitPrice(i) = .Offset(i, 1)

End With

ReguestedCode = InputBox("Введите код товара (большая латинская буква и 4 цифры)")

For i = 1 To Nproducts

If ProdCode(i) = ReguestedCode Then

ReguestedPrice = UnitPrice(i)

MsgBox "Товар с кодом" & ReguestedCode & " стоит " & Format(ReguestedPrice, "0,00р."), vbInformation, "Товар не найден"

MsgBox "Товара с кодом " & ReguestedCode & " нет в списке ", vbInformation, "Товар не найден”

23. Управляющая структура While-Wend

Действие ее подобно действию For-Next, но группа операторов вы-полняется не заданное число раз, а до соблюдения определенного условия. В программе Proc34 инструкция While-Wend использована для выделения определенного значения из последовательности случайных чисел.

Sub Proc34_WhileWend ()

Dim LotteryEntry As Integer

LotteryEntry = 0

While LotteryEntry <> 7

LotteryEntry = Int (10*Rnd ())

MsgBox “Ваше число равно “& LotteryEntry &”. Вы выиграли!!”

Программа Proc34 гарантирует, что в информационном окне всегда отображается заданное число. Цикл While-Wend выполняется, пока значе-ние переменной LotteryEntry не станет равным 7 (в условии использован оператор неравенства <>). При каждом выполнении цикла этой перемен-ной присваивается случайное значение от 1 до 9, а затем с помощью функ-ции VBA Beep, подается звуковой сигнал через внутренний динамик ком-пьютера. При запуске этой программы несколько раз, можно услышать разное количество сигналов, в зависимости от того, на каком шаге генера-тор случайных чисел вернет число 7.

Рассмотрим структуру цикла While-Wend подробнее.

While Ключевое слово, начало структуры While-Wend

LotteryEntry <> 7 Условие, определяющее, будет или нет вы-полнен цикл. Если оно соблюдено, цикл вы-полняется, если нет – управление передается оператору, стоящему перед ключевым сло-вом Wend

LotteryEntry=Int(10*Rnd()) Первый оператор тела

Beep Второй оператор тела

Wend Ключевое слово, отмечающее конец струк-туры While-Wend

Введение в систему программирования VBA. Объектная модель 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 – объекты, с которыми приходится работать в программе. Чаще всего используются такие объекты, как рабочие книги 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("Введите цену для сравнения", "окно для ввода критерия")

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

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

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

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

5. Стандартные элементы управления VB: понятия, свойства, методы, события общие для этих элементов.Краткая характеристика элементов управления . Элементы управления - это объекты, которые можно разместить на форме. Как и все объекты, они имеют свойства, методы и события. Свойства определяют внешний вид и поведение.

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

Объекты Excel

Программист, работающий в 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. В этой модели объекты связаны между собой отношением встраивания . На нулевом уровне иерархии существует некоторый центральный объект , в который встроены другие объекты, составляющие первый уровень иерархии. В каждый из объектов первого и последующих уровней могут быть встроены объекты следующего уровня. Так этот процесс продолжается. Таким образом, объекты в этой модели "толстые", поскольку в них встроено большое число других объектов. В особенности это касается объектов, стоящих на верхних уровнях иерархии.

Лекция Объектная модель MS Excel.

1. Общая характеристика объектной модели MS Excel

2. Характеристика объектов

3. Работа в среде VBA. Управление свойствами объектов

Введение

Табличный процессор Excel является программой с достаточно широкими возможностями, с большинством из которых вы знакомы. Однако кроме этого, разработчики заложили в нее средства адаптации для повышения эффективности решения конкретных задач. К этим средствам относятся различные настройки, средства автоматизации действий пользователя (макросы), а также встроенная система программирования VBA. Само приложение разработано с использованием ООП, а VBA обеспечивает доступ к объектам программы, благодаря чему в распоряжении квалифицированного пользователя имеются практически неограниченные возможности по адаптации этого приложения. На этом и нескольких последующих занятиях мы познакомим вас с тем, как это можно использовать.

1. Общая характеристика объектной модели MS Excel

ООП построен на использовании объектов. Реальные объекты окружающего мира обладают двумя основными характеристиками: они имеют набор свойств и способны разными методами изменять эти свойства и реагировать на события, возникающие как в окружающем мире, так и внутри самого объекта. Именно в таком виде в языках программирования и реализовано понятие объекта, как совокупности свойств (структур данных, характерных для этого объекта) и методов их обработки (подпрограмм изменения свойств).

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

Методы – это выполняемые объектом действия, его рабочие операторы. В общем, методы – это процедуры (действия), которые можно выполнить, а свойства - это атрибуты, устанавливаемые пользователем или системой.

При выполнении ООП-программ реализуется событийный принцип, суть которого состоит в том, что объекты программы могут реагировать на события, происходящие в системе. События – это сообщения, которые определяют порядок действий программы. События могут носить разную природу – щелчки кнопками мыши, перемещение указателя мыши, ввод или изменение данных, нажатие на кнопки в окнах программы или на клавиши клавиатуры, ошибки программы и системы и т. п. Реакция состоит в выполнении одного из методов объекта. Для большинства объектов характерно событие Click (щелчок), которое наступает, если щелкнуть левой кнопкой мыши на избранном объекте. Характерными являются также события: DblClick (двойной щелчок), MouseDown, MouseUp (нажатие и отпускание кнопки мыши), Exit и Enter (потеря и получение фокуса) и многие другие.

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

Если нет объекта с требуемыми характеристиками, программист может создать такой объект и в дальнейшем использовать его в этой или другой программе.

При адаптации приложения нет необходимости создавать новые объекты, достаточно использовать уже существующие. Нужно только знать их. Представление о составе и отношениях между объектами дает объектная модель приложения. У каждого приложения она своя.

Объектная модель MS Excel представляет собой иерархию объектов, подчиненных объекту Application , который соответствует самому приложению.

Число объектов достаточно велико, они образуют древовидную структуру (более мелкие ветви являются свойствами более крупных). Корнем этого "дерева" (начальным объектом) является Application (само приложение MS Excel).

Часть объектов являются единичными (т.е. существуют в единственном экземпляре), а часть являются членами коллекций (семейств). Для единичных объектов достаточно указать имя, а для членов семейств - имя семейства и номер или имя члена семейства.


Ниже приведены часть объектов MS Excel, которые мы будем использовать в своих программах.

Рис. 1. Упрощенная объектная модель Excel

На этом рисунке для семейств в скобках записаны имена объектов из семейств.

Для обращения к свойству или методу объекта (ссылки на объект) может использоваться либо полная, либо неявная ссылка.

Полная ссылка состоит из ряда имен вложенных друг в друга объектов (в соответствии с иерархией). В качестве разделителя имен используется точка. Например, полная ссылка на ячейку A5 рабочего листа Лист1 рабочей книги Книга1 (и например, записи в нее числа 10) в операторе присваивания имеет вид:

Application.Workbooks ("Книга 1").Worksheets("Лист 1").Range("A5") = 10

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



Объектная модель Microsoft Access, например, содержит команды и объекты, ориентированные на работу с базами данных, что значит - работа с таблицами, запросами, формами и отчетами. В Excel, которая ориентирована на работу с книгами и таблицами, объектная модель предназначена именно для этого. Excel - это приложение, состоящее из трех слоев: слой, обеспечивающий взаимодействие с пользователем, слой объектной модели и слой работы с самими данными. Пользовательский интерфейс в виде таблиц Excel, который вы обычно видите, является слоем для клиентов и наиболее оптимизирован для работы пользователей.


Таблицы зачастую очень важны в бухгалтерском деле. Для более качественной работы с ними нужна хорошая программа для бухгалтерии, одной из которых является Инфо-Предприятие . Это эффективная программа для бухгалтерского учета, позволяющая вести различные типы отчетности, например, налоговую отчетность, бухгалтерскую отчетность и т.п. Благодаря своей простоте и легкости в освоении она очень хорошо подходит для индивидуальных предпринимателей и малого бизнеса.


Всегда, когда вы что-нибудь делаете в своей таблице, вы подаете команды через объектную модель Excel. Например, когда вы открываете книгу, выполняется код, который привязан к пунктам главного меню Excel Файл - Открыть, и тот же самый код использует команда Workbooks. Open, которая открывает книгу Excel и добавляет данные о ней в коллекцию объектов книг. Аналогично, если вы в настройках Excel измените режим вычисления на ручной и нажмете клавишу F9 для выполнения пересчета формул, будет выполнена та же программа, что и в результате вызова команды Application. Calculate. Используя объектную модель Excel и язык программирования Visual Basic, не так сложно разработать собственное приложение представления данных с такой же функциональностью, как и Microsoft Excel. Каждая команда в меню и каждая кнопка в Microsoft Excel отображена на объектную модель Excel. Нельзя сказать, что Excel использует такие же объекты, но Microsoft дает вам возможность использовать объекты и методы так, что вы сможете сделать все в вашем коде, как и в меню Excel. Может показаться странным, но если вы решите создать свое собственное приложение представления данных, то объем кода, который потребуется написать, будет относительно небольшим, ведь вся функциональность уже содержится в существующих объектах.


Под объектной моделью расположен слой работы с данными, который хранит сами данные и отвечает за их хранение и обработку. В объектной модели Excel содержится огромное количество объектов, например Workbook, Worksheet, Range, Chart, Pivot Table, Comments. Эти объекты предлагают разнообразные возможности для обработки данных. Наиболее важным является то, что они могут быть контролируемы вашим кодом.


При программировании в VBA вы используете стандартные операторы и функции, такие как For…Next, If...Then...Else, MsgBox, но вы также используете объектную модель, чтобы связаться с приложением Excel, управляя свойствами и методами различных объектов.


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


Объект - это часть программы Excel. Объекты имеют свою иерархию. Следующим за Application следует объект Workbook, за ним - Worksheet. Следующим после каждого объекта Worksheet идет Range и т.д. Каждый объект имеет свои настройки, называемые свойствами, и действия, которые можно производить с объектом, называемые методами.

Аннотация: Лекция посвящена описанию объектной модели 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 .)


Рис. 13.1.

Для выполнения большинства операций в 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

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 используйте значок ~ (



Рекомендуем почитать

Наверх