Объекты рабочей книги excel

Термин Объекты Excel (понимаемый в широком смысле, как объектная модель Excel) включает в себя элементы, из которых состоит любая рабочая книга Excel. Это, например, рабочие листы (Worksheets), строки (Rows), столбцы (Columns), диапазоны ячеек (Ranges) и сама рабочая книга Excel (Workbook) в том числе. Каждый объект Excel имеет набор свойств, которые являются его неотъемлемой частью.

Например, объект Worksheet (рабочий лист) имеет свойства Name (имя), Protection (защита), Visible (видимость), Scroll Area (область прокрутки) и так далее. Таким образом, если в процессе выполнения макроса требуется скрыть рабочий лист, то достаточно изменить свойство Visible этого листа.

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

Доступ ко всем основным объектам Excel может быть осуществлён (прямо или косвенно) через объект Workbooks, который является коллекцией всех открытых в данный момент рабочих книг. Каждая рабочая книга содержит объект Sheets – коллекция, которая включает в себя все рабочие листы и листы с диаграммами рабочей книги. Каждый объект Worksheet состоит из коллекции Rows – в неё входят все строки рабочего листа, и коллекции Columns – все столбцы рабочего листа, и так далее.

В следующей таблице перечислены некоторые наиболее часто используемые объекты Excel. Полный перечень объектов Excel VBA можно найти на сайте Microsoft Office Developer (на английском).

Объект Описание
Application Приложение Excel.
Workbooks Коллекция всех открытых в данный момент рабочих книг в текущем приложении Excel. Доступ к какой-то конкретной рабочей книге может быть осуществлён через объект Workbooks при помощи числового индекса рабочей книги или её имени, например, Workbooks(1) или Workbooks(«Книга1»).
Workbook Объект Workbook – это рабочая книга. Доступ к ней может быть выполнен через коллекцию Workbooks при помощи числового индекса или имени рабочей книги (см. выше). Для доступа к активной в данный момент рабочей книге можно использовать ActiveWorkbook.

Из объекта Workbook можно получить доступ к объекту Sheets, который является коллекцией всех листов рабочей книги (рабочие листы и диаграммы), а также к объекту Worksheets, который представляет из себя коллекцию всех рабочих листов книги Excel.

Sheets Объект Sheets– это коллекция всех листов рабочей книги. Это могут быть как рабочие листы, так и диаграммы на отдельном листе. Доступ к отдельному листу из коллекции Sheets можно получить при помощи числового индекса листа или его имени, например, Sheets(1) или Sheets(«Лист1»).
Worksheets Объект Worksheets – это коллекция всех рабочих листов в рабочей книге (то есть, все листы, кроме диаграмм на отдельном листе). Доступ к отдельному рабочему листу из коллекции Worksheets можно получить при помощи числового индекса рабочего листа или его имени, например, Worksheets(1) или Worksheets(«Лист1»).
Worksheet Объект Worksheet – это отдельный рабочий лист книги Excel. Доступ к нему можно получить при помощи числового индекса рабочего листа или его имени (см. выше).

Кроме этого Вы можете использовать ActiveSheet для доступа к активному в данный момент рабочему листу. Из объекта Worksheet можно получить доступ к объектам Rows и Columns, которые являются коллекцией объектов Range, ссылающихся на строки и столбцы рабочего листа. А также можно получить доступ к отдельной ячейке или к любому диапазону смежных ячеек на рабочем листе.

Rows Объект Rows – это коллекция всех строк рабочего листа. Объект Range, состоящий из отдельной строки рабочего листа, может быть доступен по номеру этой строки, например, Rows(1).
Columns Объект Columns – это коллекция всех столбцов рабочего листа. Объект Range, состоящий из отдельного столбца рабочего листа, может быть доступен по номеру этого столбца, например, Columns(1).
Range Объект Range – это любое количество смежных ячеек на рабочем листе. Это может быть одна ячейка или все ячейки листа.

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

По-другому ссылку на диапазон можно записать, указав адреса начальной и конечной ячеек. Их можно записать через двоеточие или через запятую. Например, Worksheet.Range(«A1:B10») или Worksheet.Range(«A1», «B10») или Worksheet.Range(Cells(1,1), Cells(10,2)).

Обратите внимание, если в адресе Range вторая ячейка не указана (например, Worksheet.Range(«A1») или Worksheet.Range(Cells(1,1)), то будет выбран диапазон, состоящий из единственной ячейки.

Приведённая выше таблица показывает, как выполняется доступ к объектам Excel через родительские объекты. Например, ссылку на диапазон ячеек можно записать вот так:

Workbooks("Книга1").Worksheets("Лист1").Range("A1:B10")

Содержание

  1. Присваивание объекта переменной
  2. Активный объект
  3. Смена активного объекта
  4. Свойства объектов
  5. Методы объектов
  6. Рассмотрим несколько примеров
  7. Пример 1
  8. Пример 2
  9. Пример 3

Присваивание объекта переменной

В Excel VBA объект может быть присвоен переменной при помощи ключевого слова Set:

Dim DataWb As Workbook
Set DataWb = Workbooks("Книга1.xlsx")

Активный объект

В любой момент времени в Excel есть активный объект Workbook – это рабочая книга, открытая в этот момент. Точно так же существует активный объект Worksheet, активный объект Range и так далее.

Сослаться на активный объект Workbook или Sheet в коде VBA можно как на ActiveWorkbook или ActiveSheet, а на активный объект Range – как на Selection.

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

Таким образом, чтобы сослаться на диапазон A1:B10 на активном рабочем листе активной книги, можно записать просто:

Смена активного объекта

Если в процессе выполнения программы требуется сделать активной другую рабочую книгу, другой рабочий лист, диапазон и так далее, то для этого нужно использовать методы Activate или Select вот таким образом:

Sub ActivateAndSelect()

   Workbooks("Книга2").Activate
   Worksheets("Лист2").Select
   Worksheets("Лист2").Range("A1:B10").Select
   Worksheets("Лист2").Range("A5").Activate

End Sub

Методы объектов, в том числе использованные только что методы Activate или Select, далее будут рассмотрены более подробно.

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

Каждый объект VBA имеет заданные для него свойства. Например, объект Workbook имеет свойства Name (имя), RevisionNumber (количество сохранений), Sheets (листы) и множество других. Чтобы получить доступ к свойствам объекта, нужно записать имя объекта, затем точку и далее имя свойства. Например, имя активной рабочей книги может быть доступно вот так: ActiveWorkbook.Name. Таким образом, чтобы присвоить переменной wbName имя активной рабочей книги, можно использовать вот такой код:

Dim wbName As String
wbName = ActiveWorkbook.Name

Ранее мы показали, как объект Workbook может быть использован для доступа к объекту Worksheet при помощи такой команды:

Workbooks("Книга1").Worksheets("Лист1")

Это возможно потому, что коллекция Worksheets является свойством объекта Workbook.

Некоторые свойства объекта доступны только для чтения, то есть их значения пользователь изменять не может. В то же время существуют свойства, которым можно присваивать различные значения. Например, чтобы изменить название активного листа на «Мой рабочий лист«, достаточно присвоить это имя свойству Name активного листа, вот так:

ActiveSheet.Name = "Мой рабочий лист"

Методы объектов

Объекты VBA имеют методы для выполнения определённых действий. Методы объекта – это процедуры, привязанные к объектам определённого типа. Например, объект Workbook имеет методы Activate, Close, Save и ещё множество других.

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

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

Чтобы передать методу аргументы, необходимо записать после вызова метода значения этих аргументов через запятую. Например, если нужно сохранить активную рабочую книгу как файл .csv с именем «Книга2», то нужно вызвать метод SaveAs объекта Workbook и передать аргументу Filename значение Книга2, а аргументу FileFormat – значение xlCSV:

ActiveWorkbook.SaveAs "Книга2", xlCSV

Чтобы сделать код более читаемым, при вызове метода можно использовать именованные аргументы. В этом случае сначала записывают имя аргумента, затем оператор присваивания «:=» и после него указывают значение. Таким образом, приведённый выше пример вызова метода SaveAs объекта Workbook можно записать по-другому:

ActiveWorkbook.SaveAs Filename:="Книга2", [FileFormat]:=xlCSV

В окне Object Browser редактора Visual Basic показан список всех доступных объектов, их свойств и методов. Чтобы открыть этот список, запустите редактор Visual Basic и нажмите F2.

Рассмотрим несколько примеров

Пример 1

Этот отрывок кода VBA может служить иллюстрацией использования цикла For Each. В данном случае мы обратимся к нему, чтобы продемонстрировать ссылки на объект Worksheets (который по умолчанию берётся из активной рабочей книги) и ссылки на каждый объект Worksheet отдельно. Обратите внимание, что для вывода на экран имени каждого рабочего листа использовано свойство Name объекта Worksheet.

'Пролистываем поочерёдно все рабочие листы активной рабочей книги
'и выводим окно сообщения с именем каждого рабочего листа

Dim wSheet As Worksheet

For Each wSheet in Worksheets
   MsgBox "Найден рабочий лист: " & wSheet.Name
Next wSheet

Пример 2

В этом примере кода VBA показано, как можно получать доступ к рабочим листам и диапазонам ячеек из других рабочих книг. Кроме этого, Вы убедитесь, что если не указана ссылка на какой-то определённый объект, то по умолчанию используются активные объекты Excel. Данный пример демонстрирует использование ключевого слова Set для присваивания объекта переменной.

В коде, приведённом ниже, для объекта Range вызывается метод PasteSpecial. Этот метод передаёт аргументу Paste значение xlPasteValues.

'Копируем диапазон ячеек из листа "Лист1" другой рабочей книги (с именем Data.xlsx)
'и вставляем только значения на лист "Результаты" текущей рабочей книги (с именем CurrWb.xlsm)

Dim dataWb As Workbook

Set dataWb = Workbooks.Open("C:Data")

'Обратите внимание, что DataWb – это активная рабочая книга.
'Следовательно, следующее действие выполняется с объектом Sheets в DataWb.

Sheets("Лист1").Range("A1:B10").Copy

'Вставляем значения, скопированные из диапазона ячеек, на рабочий лист "Результаты"
'текущей рабочей книги. Обратите внимание, что рабочая книга CurrWb.xlsm не является
'активной, поэтому должна быть указана в ссылке.

Workbooks("CurrWb").Sheets("Результаты").Range("A1").PasteSpecial Paste:=xlPasteValues

Пример 3

Следующий отрывок кода VBA показывает пример объекта (коллекции) Columns и демонстрирует, как доступ к нему осуществляется из объекта Worksheet. Кроме этого, Вы увидите, что, ссылаясь на ячейку или диапазон ячеек на активном рабочем листе, можно не указывать этот лист в ссылке. Вновь встречаем ключевое слово Set, при помощи которого объект Range присваивается переменной Col.

Данный код VBA показывает также пример доступа к свойству Value объекта Range и изменение его значения.

'С помощью цикла просматриваем значения в столбце A на листе "Лист2",
'выполняем с каждым из них арифметические операции и записываем результат
'в столбец A активного рабочего листа (Лист1)

Dim i As Integer
Dim Col As Range
Dim dVal As Double

'Присваиваем переменной Col столбец A рабочего листа "Лист2"

Set Col = Sheets("Лист2").Columns("A")
i = 1

'Просматриваем последовательно все ячейки столбца Col до тех пор
'пока не встретится пустая ячейка

Do Until IsEmpty(Col.Cells(i))

   'Выполняем арифметические операции со значением текущей ячейки

   dVal = Col.Cells(i).Value * 3 - 1

   'Следующая команда записывает результат в столбец A
   'активного листа. Нет необходимости указывать в ссылке имя листа,
   'так как это активный лист рабочей книги.

   Cells(i, 1).Value = dVal
   i = i + 1

Loop

Оцените качество статьи. Нам важно ваше мнение:

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

Создаваемые в Excel файлы называются рабочими книгами. Рабочая книга может включать несколько листов (до 255). Листы могут быть следующих типов:

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

Лист диаграмм (ChartSheet) – на этом листе с помощью мастера диаграмм (ChartWisard) можно создавать диаграммы.

В Excel – 97 и более поздние версии встроен редактор VBA, позволяющий пользователям самим создавать диалоговые окна, программы и макросы, а также управлять уже созданными листами.

2.1. Понятие объекта, свойства, методы и события

Приложение Excel создано на принципе объектно-ориентированного подхода, поэтому само приложение, Рабочая книга, Рабочий лист и Лист диаграмм, также как и большинство элементов Excel являются объектами и имеют иерархическую подчиненность. Главным объектом, стоящим на верхнем уровне иерархии, является само приложение Excel (Application), рабочие книги (WorkBooks) – подчиненные приложению объекты. В свою очередь рабочие листы (WorkSheets) и листы диаграмм (СhartSheets) являются дочерними объектами рабочей книги.

Объекты имеют свойства и методы. Они также могут реагировать на какиелибо события. Свойства – это характеристики, которые могут принимать различные значения, определяя текущее состояние объекта. Например, размер окна или его положение на экране, имя рабочей книги являются свойствами, значения которых могут быть изменены пользователем. Методы – это функции, которые может выполнять объект, реагируя на какие-либо события. События могут происходить в результате каких-либо действий пользователя или действий операционной системы. Событиями, вызываемыми пользователем, являются, например, такие, как щелчок мышью (Click), двойной щелчок мышью (DoubleClick), нажатие клавиши и другие. События, вызываемые операционной системой, возникают, например, при создании рабочей книги, при ее закрытии, при создании нового рабочего листа и в других случаях.

Различные объекты на одни и те же события реагируют по-разному. Например, при двойном щелчке в строке заголовка окна оно может изменить размер. Щелчок правой кнопки мыши на каком-либо объекте раскрывает контекстное меню, с помощью которого можно поменять отдельные свойства объекта, например, начертание и размер шрифта или применить какой-нибудь метод.

Пример I.1. Обработка событий объектами интерфейса

Щелкните правой клавишей мыши в области рабочего листа, в раскрывшемся контекстном меню просмотрите список команд.

Щелкните правой клавишей мыши в области панелей инструментов. Просмотрите список команд, объясните, в чем состоит отличие от предыдущего списка команд и почему.

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.

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


Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

ATLEX

Выделенные серверы: в Европе / в России.

Виртуальные серверы: в Европе / в России.

Партнерская программа

VPS в 21 локации

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

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

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

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

Новости мира 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: серверы и облачные решения для вашего бизнеса

Лабораторная работа №6

Работа
с объектами
Excel на уровне приложения, рабочей
книги и листа
.

1.     
Цель работы:

1.1.       изучение особенностей использования VBA в Excel.

1.2.       Изучение возможностей VBA при
непосредственных расчетах в
Excel.

2.     
Приборы и оборудование:

2.1.       Методические указания.

2.2.       ПЭВМ типа IBM PC/XT.

2.3.       MS
Excel.

2.4.       Visual Basic for Application.

3.     
Порядок выполнения работы:

3.1.       Изучить основные теоретические сведения (Приложение
А).

3.2.       Задание 1. Разработать программу, которая по
введенным числовым значениям некоторого уравнения решает данное уравнение и
находит неизвестную переменную х. Результат вычисления выводится в текстовое
окно на форме и на лист Excel.

3.2.1.  Запустите
приложение Excel, сохраните документ. Перейдите в редактор VBA. Создайте форму
согласно приведенному рисунку 1.

http://psuti-op.narod.ru/71_clip_image006.gif

Рисунок 1
– Разработанная форма в рабочем состоянии.

3.2.2.  На
листе Excel расположите необходимый текст (оформление), предусмотрев соответствующие
ячейки вывода информации (см. рисунок 2).

http://psuti-op.narod.ru/71_clip_image007.gif

Рисунок 2
– Вывод результатов на лист
Excel после запуска формы.

3.2.3.  Обработайте кнопки.

Кнопка Вычислить

Private Sub CommandButton1_Click()

Dim a, b, c As Double

a = CDbl(TextBox1.Text)

b = CDbl(TextBox2.Text)

c = CDbl(TextBox3.Text)

With ActiveSheet

Range(«b3»).Value = a

Range(«b4»).Value = b

Range(«b5»).Value = c

Range(«b6»).FormulaLocal = «=b3*b7^3+b4*sin(b7)»

Range(«b6»).GoalSeek Goal:=c,
changingCell:=Range(«b7»)

TextBox4.Text = CStr(.Range(«b7»).Value)

TextBox4.Text = FormatNumber(TextBox4.Text, 2)

End With

End Sub

Кнопка Закрыть

Private Sub CommandButton2_Click()

UserForm1.Hide

End
Sub

3.2.4.  Откомпилируйте
программу и запустите на выполнение.

3.2.5.  В
соответствии с номером ПК, создайте свою программу, исходя из задания (см. Приложение Б). Создайте кнопку или панель в Вашем проекте для
непосредственного вызова приложения.

3.3.       Задание 2. Создать программу, которая по
введенным текстовым данным в соответствующие текстовые поля формы
автоматизирует ввод данных на студентов некоторой специальности учебного
заведения. Результаты заполнения текстовых полей выводятся на лист
Excel, что позволяет при необходимости распечатать данные.

3.3.1.  Запустите
приложение Excel, сохраните документ. Перейдите в редактор VBA. Создайте форму
согласно приведенному рисунку 3.

Рисунок 3 – Разработанная форма в режиме конструктора.

3.3.2.  На
листе Excel расположите необходимый текст (оформление), предусмотрев соответствующие
ячейки вывода информации (см. рисунок 4).

Рисунок 4
– Пример организации данных на лист
Excel.

3.3.3.  Обработайте
кнопки.

Кнопка Создать таблицу

Const strNomer = 3 ‘количество строк
для заголовка

Dim strName1 As String ‘строка для адресации
ячеек

Dim strName2 As String

Dim nomer As Long ‘номер очередной строки таблицы

Private Sub CommandButton1_Click()

ActiveWorkbook.SaveAs («работа с базой данных.
xls»)

nomer = 1 End Sub

Кнопка Добавить строку

Private Sub CommandButton2_Click()

strName1 = Trim(Str(strNomer + nomer))

With ActiveSheet ‘ввод данных для новой отчетной таблицы

Range(«A» + strName1).Value = nomer

Range(«B» + strName1).Value = TextBox1.Text

Range(«C» + strName1).Value = TextBox2.Text

Range(«D» + strName1).Value = TextBox3.Text

автозаполнение с текущей строки таблицы

strName2 = Trim(Str(strNomer + nomer + 1))

Set range1 =.Range(«A» + strName1
+»:D» + strName1)

Set range2 =.Range(«A» + strName1
+»:D» + strName2)

range1.AutoFill Destination:=range2

Range(«A» + strName2 +»:D» +
strName2).Clear

End With

‘очистка полей формы для ввода очередной
записи

TextBox1.Text = «»

TextBox2.Text = «»

TextBox3.Text = «»

TextBox1.SetFocus

nomer = nomer + 1

End Sub

Кнопка Закончить таблицу

Private Sub CommandButton3_Click() ‘закрытие формы подведение итогов
и вывод фамилии преподавателя

UserForm1.Hide

With ActiveSheet

strName2 = Trim(Str(strNomer + nomer + 2))

Range(«A» + strName2).Value = «Куратор»

Range(«D» + strName2).Value = TextBox4.Text

End With

End
Sub

3.3.4.  Откомпилируйте
программу и запустите на выполнение.

3.4.       Задание 3. Создать программу, которая по
введенным данным в соответствующие поля формы автоматизирует ввод данных на
студентов некоторой специальности учебного заведения. Результаты заполнения
полей выводятся на лист
Excel, что позволяет при необходимости
распечатать данные (см. рисунки 5-6). Создайте кнопку или панель в Вашем
проекте для непосредственного вызова приложения.

Рисунок 5 – Пример организации данных на лист Excel.

Рисунок 6 – Разработанная форма в режиме конструктора.

3.5.       Добавьте комментарии. Текст и результат выполнения программ занести в
отчёт.

3.6.       Сформулируйте выводы по проделанной работе.

4.     
Содержание отчёта:

4.1.       Тема работы.

4.2.       Цель работы.

4.3.       Приборы и оборудование.

4.4.       Порядок выполнения работы.

4.5.       Выводы.

4.6.       Контрольные вопросы.

5.     
Контрольные вопросы:

5.1.       Какой объект является главным в иерархии объектов Excel? Какие объекты
Вам ещё известны? Описание.

5.2.       Как задаётся группа строк и столбцов с помощью объекта Range?

5.3.       Как осуществляется связь объекта Range и свойства Cells?

5.4.      
Перечислите свойства и действия объекта
Range.

5.5.      
Перечислите методы и действия объекта
Range.

5.6.      
Какие методы объекта Range, используют
команды Excel?

5.7.       Каким образом происходит округление десятичных чисел в VBA Excel?

5.8.       Какие функции используются для приведения введенных данных к нужному
типу в VBA?

5.9.       Каким образом определить количество
строк для заголовка
?

5.10.   Как
назначить форме кнопку или пункт меню для непосредственного вызова приложения
из Word?

Приложение А

Теоретические
сведения

Использование объектов Range и Selection

В Excel наиболее
важным является объект Application. Объект Application (приложение) является
главным в иерархии объектов Excel и представляет само приложение Excel. Он
имеет более 120 свойств и 40 методов. Эти свойства и методы предназначены для
установки общих параметров приложения Excel. В иерархии Excel объект Workbook
(рабочая книга) идет сразу после объекта Application и представляет файл
рабочей книги. Рабочая книга хранится либо в файлах формата XLS (стандартная
рабочая книга), либо XLA (полностью откомпилированное приложение). Свойства и
методы рабочей книги позволяют работать с файлами. Однако наиболее
«употребляемым» на практике является объект Range, который наилучшим образом
отображает возможности использования VBA в Excel (о свойствах объекта Range см.
таблицу 1, о методах – таблицу 2).

В иерархии Excel
объект Range (диапазон) идет сразу после объекта worksheet. Объект
Range является одним из ключевых объектов VBA. Объект selection
(выбор) возникает в VBA двояко – либо как результат работы метода Select, либо
при вызове свойства selection. Тип получаемого объекта зависит от типа
выделенного объекта. Чаще всего объект Selection принадлежит классу Range, и
при работе с ним можно использовать свойства и методы объекта Range. Интересной
особенностью объектов Range и Selection является то, что они не являются элементами
никакого семейства объектов. При работе с объектом Range необходимо помнить,
как в Excel ссылаются на ячейку рабочего листа.

Задание групп
строк и столбцов с помощью объекта Range

Если в диапазоне
указываются только имена столбцов или строк, то объект Range задает диапазон,
состоящий из указанных столбцов или строк. Например, Range («а: с») задает диапазон,
состоящий из столбцов а, в и с, а Range(«2:2») – из второй строки. Другим
способом работы со строками и столбцами являются методы Rows (строки) и columns
(столбцы), возвращающие коллекции строк и столбцов. Например, столбцом а
является columns (1), а второй строкой – Rows (2).

Связь объекта
Range и свойства Cells

Так как ячейка
является частным случаем диапазона, состоящим только из единственной ячейки,
объект Range также позволяет работать с ней. Объект Cells (ячейки) – это
альтернативный способ работы с ячейкой. Например, ячейка А2 как объект
описывается Range («A2») или Cells (l, 2). В свою очередь, объект cells,
вкладываясь в Range, также позволяет записывать диапазон в альтернативном виде,
который иногда удобен для работы, а именно Range(«А2:СЗ») и Range(Cells(1,2),
Cells(3,3)) определяют один и тот же диапазон.

Таблица 1 – Свойства объекта Range

Свойство

Действия

Value

Возвращает значение из ячейки или в ячейки
диапазона. В данном примере переменной x присваивается значение из ячейки с1:
x = Range(‘C1’).Value

В следующем примере в диапазон a1:b2 введена
1: Range(‘A1:B2’).Value = 1

Name

Возвращает имя диапазона. В данном примере
диапазону a1:b2 присваивается имя «итоги»: Range(«A1:B2»).Name
= «Итоги»

Count

Возвращает число объектов в наборе. В данном
примере переменной x присваивается значение, равное числу строк
диапазона a1:b2:

x = Range(«A1:B2»).Rows.Count

CurrentRegion

Возвращает число строк текущего диапазона.
Текущим является диапазон, ограниченный пустыми строками и столбцами и
содержащий данный элемент. В следующем примере переменной у
присваивается значение, равное числу строк в текущем диапазоне, содержащем
ячейку a1:

y = Range(«A1»).CurrentRegion.Rows.Count

ColumnWidth, RowHeight

Возвращает ширину столбцов и высоту строк
диапазона

WrapText

Позволяет переносить текст при вводе в
диапазон. Допустимые значения True и False. В следующем примере в ячейку b2
вводится текст «длинный текст», и в этой ячейке устанавливается
режим ввода текста с переносом: With Range(«B2»).Value =
«Длинный текст».WrapText = True End With

EntireColumn, EntireRow

Возвращает столбец и строку соответственно.
В данном примере очищается содержимое строки и выделяется столбец с активной
ячейкой:

ActiveCell.EntireRow.Clear

ActiveCell.EntireColumn.Select

Comment

Возвращает объект comment (примечание), который
связан с левым верхним углом диапазона при отображении на экране. Объект
comment является элементом семейства comments. Метод AddComment, примененный
к диапазону, создает новое примечание. Среди методов объекта Comment отметим
только метод Text, который задает текст, выводимый в примечании.
Синтаксис: Text(Text,Start,Overwrite)

Здесь Text — строка, выводимая в качестве
примечания; Start — с какого символа вводится текст в уже существующее
примичание. Если аргумент опущен, то из примечания удаляется весь ранее
введенный текст; overwrite — допустимые значения: True (вводимый текст
записывается поверх уже существующего) и False (вводимый текст вставляется в
уже существующий). Среди свойств объекта comment отметим только свойство
visible
, устанавливающее отображение примечания при активизации
диапазона, имеющего определенное примечание

VerticalAlignment

Вертикальное выравнивание. Допустимые
значения:

xlBottom
(выравнивание по нижнему краю); xlCenter (выравнивание по центру); xlJustify
(выравнивание по высоте); xlTop (выравнивание по верхнему краю)

Orientation

Ориентация. Допускается либо угол поворота
текста в градусах от -90 до 90

ShrinkToFit

Допустимые значения: True (автоматическое
изменение шрифта так, чтобы текст помещался в ячейку) и False (в противном
случае)

Font

Возвращает объект Font (шрифт). Объект Font
имеет следующие свойства:

Name — строка,
указывающая имя шрифта, например «Arial Cyr»;

FontStyle
стиль, возможен Regular (обычный), Bold (полужирный), Italic (курсив), Bold
Italic (полужирный курсив);

Size — размер;

Strikethrough
— допустимы два значения: True (буквы имеют линию по центру, как будто они
перечеркнуты) и False (не имеют линии по центру);

Superscript
допустимы два значения: True (текст используется как верхний индекс) и False
(не используется как верхний индекс);

Subscript
допустимы два значения: True (текст используется как нижний индекс) и False
(не используется как нижний индекс);

Underline
устанавливает тип подчеркивания xlNone (нет подчеркивания) xlSingle
(одинарное подчеркивание)

Horizontal Alignment

Горизонтальное выравнивание. Допустимые
значения:

xlGeneral
(обычное выравнивание, зависит от типа вводимых значений);

xlCenter
(выравнивание по центру); xlRight (выравнивание по правому краю); xlLeft
(выравнивание по левому краю); xlJustify (выравнивание по ширине); xlCenterAcrossSelection
(выравнивание по центру в выделенном диапазоне); xlFill
(выравнивание по ширине).

Таблица 2 – Методы объекта
Range

Метод

Действие

AutoFit

Автоматически настраивает ширину столбца и
высоту строки

Clear, ClearComments, ClearContents, ClearFormats,
ClearNotes

Метод clear очищает диапазон. В следующем
примере очищается диапазон A1:G37. Range(«A1:G37»).Clear
Методы ClearComments, ClearContents, ClearFormats и ClearNotes очищают в указанном
диапазоне комментарии, содержание, форматы и примечания соответственно

Insert

Вставка ячейки или диапазона ячеек. В
следующем примере вставляется новая строка перед четвертой строкой рабочего
листа Лист1: Worksheets(«Лист1»).Rows(4).Insert

Select

Выделение диапазона

Copy

Копирует диапазон в другой диапазон или
буфер обмена. Синтаксис: Copy(destination) Аргумент destination определяет
диапазон, куда копируется данный диапазон. Если аргумент destination опущен,
то копирование происходит в буфер обмена. В данном примере диапазон a1:d4
рабочего листа копируется в диапазон e5 листа 2: Worksheets(«Лист1»).Range(«A1:D4»).Copy
destination:= Worksheets(«Лист2»).Range(«E5»)

Delete

Удаляет диапазон

AddComment

Добавляет примечание к диапазону. Синтаксис:
AddComment(Text) Text — строковое выражение, добавляемое в качестве
примечания

Address

Возвращает адрес ячейки. Синтаксис: Address(rowAbsolute,
columnAbsolute, referenceStyle, external, relativeTo).
Аргументы:
rowAbsolute — допустимы два значения True и False, если используется
значение True или аргумент опущен, то возвращается абсолютная ссылка на
строку; columnAbsolute — допустимы два значения True и False, если
используется значение True или аргумент опущен, то возвращается абсолютная
ссылка на столбец; referenceStyle — допустимы два значения xllA1 и
xlRld, если используется значение xlAl или аргумент опущен, то возвращается
ссылка в виде формата A1;external — допустимы два значения True и
False, если используется значение False или аргумент опущен, то возвращается
относительная ссылка. Следующий пример показывает различные результаты
адресации:

MsgBox Cells(1,1).Address — В диалоговом окне отображается адрес $A$1.

MsgBox
Cells(1,1).Address(rowAbsolute:=False) —
В
диалоговом окне отображается адрес $A1.

MsgBox Cells(1,1).Address(referenceStyle:=xlR1C1) — В
диалоговом окне отображается адрес R1C1

Cut

Копирует диапазон с удалением в указанный
диапазон или буфер обмена. Синтаксис: Cut(destination). Аргумент
destination определяет диапазон, который копируется в данный диапазон. Если
аргумент destination опущен, то Диапазон копируется в буфер обмена

Columns, Rows

Возвращает соответственно семейства столбцов
и строк, из которых состоит диапазон. В следующем примере переменным i и j
присваиваются значения, равные количеству столбцов и строк в выделенном
диапазоне соответственно:

i = Selection.Columns.Count

j= Selection.Rows.Count

Методы объекта
Range, использующие команды Excel

Встроенные в Excel
команды и методы позволяют эффективно работать с диапазоном: заполнять его
элементами по образцу, сортировать, фильтровать и консолидировать данные,
строить итоговую таблицу и создавать сценарии, решать нелинейное уравнение с
одной переменной.

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

Синтаксис: объект. AutoFill(диапазон, тип).

Аргументы: Диапазон, с которого начинается заполнение тип Допустимые значения:
xlFillDefault, xlFillSeries, xlFillCopy, xlFillFormats,
xlFillValues,xlFillDays, xlFillWeekdays, xlFillMonths, xlFillYears,
xlLinearTrend, xlGrowthTrend. По умолчанию xlFillDefault

Метод AutoFilter. Метод AutoFilter
(автофильтр) представляет собой простой способ запроса и фильтрации данных на
рабочем листе. Если AutoFilter активизирован, то каждый заголовок поля
выделенного диапазона данных превращается в поле с раскрывающимся списком.
Выбирая запрос на вывод данных в поле с раскрывающимся списком, осуществляется
вывод только тех записей, которые удовлетворяют указанным условиям. Поле с
раскрывающимся списком содержит следующие типы условий: Все (All), Первые
десять (Тор 10), Условие (Custom), конкретный элемент данных, Пустые (Blanks) и
Непустые (NonBlanks). Вручную метод запускается посредством выбора команды
Данные, Фильтр, Автофильтр (Data, Filter, AutoFilter). При применении метода
AutoFilter допустимы два синтаксиса.

Синтаксис 1: Объект. AutoFilter

В этом случае
метод AutoFilter выбирает или отменяет команду Данные, Фильтр, Автофильтр
(Data, Filter, AutoFilter), примененную к диапазону, заданному в аргументе
объект.

Синтаксис
2:
Объект. AutoFilter (field, criteria1,
operator, criteria2)

В этом случае
метод AutoFilter выполняет команду Данные, Фильтр, Автофильтр (Data, Filter,
AutoFilter) по критериям, указанным в аргументе.

Аргументы: field
Целое, указывающее поле, в котором производится фильтрация данных; Criteria1 Задают два возможных
условия фильтрации и criteria2 поля. Допускается использование строковой
постоянной, например 101, и знаков отношений >, <,>=, <=, =,
<>; operator
Допустимые значения: X1And (логическое объединение первого и второго
критериев); X1or (логическое сложение первого и второго критериев); При работе
с фильтрами полезны метод showAllData и свойства FilterMode и AutoFilterMode.

Метод ShowAllData. Показывает все
отфильтрованные и неотфильтрованные строки рабочего листа. Cвойство FilterMode
Допустимые значения: True (если на рабочем листе имеются отфильтрованные данные
со скрытыми строками), False (в противном случае). Свойство AutoFilterMode
Допустимые значения: True (если на рабочем листе выведены раскрывающиеся списки
метода AutoFilter), False (в противном случае)

Метод GoalSeek. Метод GoalSeek (подбор
параметра) подбирает значение параметра (неизвестной величины), являющееся
решением уравнения с одной переменной. Предполагается, что уравнение приведено
к виду: правая часть является постоянной, не зависящей от параметра, который
входит только в левую часть уравнения. Вручную метод GoalSeek выполняется с
помощью команды Сервис, Подбор параметра (Tools, Goal Seek). Метод GoalSeek
вычисляет корень, используя метод последовательных приближений, результат
выполнения которого, вообще говоря, зависит от начального приближения. Поэтому
для корректности нахождения корня надо позаботиться о корректном указании этого
начального приближения.

Синтаксис:
Объект
. GoalSeek(Goal, ChangingCell)

Аргументы: Объект
Ячейка, в которую введена формула, являющаяся правой частью решаемого
уравнения. В этой формуле роль параметра (неизвестной величины) играет ссылка
на ячейку, указанную в аргументе ChangingCell; Goal Значение
левой части решаемого уравнения, не содержащей параметра; ChangingCell Ссылка
на ячейку, отведенную под параметр (неизвестную величину). Значение, введенное
в данную ячейку до активизации метода Goalseek, рассматривается как начальное
приближение к искомому корню.

Точность, с
которой находится корень и предельно допустимое число итераций, используемых
для нахождения корня, устанавливается свойствами Maxchange и Maxiterations
объекта Application. Например, определение корня с точностью до 0,0001 максимум
за 1000 итераций устанавливается инструкцией:

With Application

Maxiterations = 1000

MaxChange = 0.0001

End With

Вручную эти
величины устанавливаются на вкладке Вычисления (Calculation) диалогового окна
Параметры (Options), вызываемого командой Сервис, Параметры (Tools, Options).

Метод Sort. Сортировка позволяет выстраивать
данные в лексикографическом порядке по возрастанию или убыванию. Метод sort
осуществляет сортировку строк списков и баз данных, а также столбцов рабочих
листов с учетом до трех критериев, по которым производится сортировка.
Сортировка данных вручную совершается с использованием команды Данные,
Сортировка (Data, Sort).

Синтаксис:
Объект. Sort(key1, order1, key2, order2,
key3, order3, header, orderCustom, matchCase, orientaticn)

Аргументы: Объект
Диапазон, который будет сортироваться; Key1 Ссылка на первое упорядочиваемое поле; Order1 Задает порядок
упорядочивания. Допустимые значения: xlAscending (возрастающий порядок);
xlDescending (убывающий порядок); key2
Ссылка на второе упорядочиваемое поле; order2 Задает порядок упорядочивания. Допустимые
значения: xlAscending (возрастающий порядок); xlDescending (убывающий порядок);
header
Допустимые значения: xlYes (первая строка диапазона содержит заголовок, который
не сортируется); xlNo (первая строка диапазона не содержит заголовка, по
умолчанию считается данное значение); xlGuess (Excel решает, имеется ли
заголовок); orderCustom
Пользовательский порядок сортировки. По умолчанию используется Normal; matchCase Допустимые значения:
True (учитываются регистры) и False (регистры не учитываются); orientation Допустимые значения:
xlTopToBottom (сортировка осуществляется сверху вниз, т. е. по строкам);
xlLeftToRight (слева направо, т. е. по столбцам)

Например, диапазон
А1:С20 рабочего листа лист1 сортируется следующей командой в порядке
возрастания так, что первоначальная сортировка происходит по первому столбцу
этого диапазона, а второстепенная – по второму:

Worksheets(«Лист»).Range(«A1:
C20»).Sort _

key1:=Worksheets(«Sheet1»).Range(«A1»),
_

key2:=Worksheets
(«Sheet1»).Range («B1»)

Округление чисел. Округлять десятичные числа
приходится часто, особенно при работе с денежными значениями. VBA не предлагает
прямого решения таких задач, но обсуждаемые ниже приемы помогут решить эти
проблемы.

1 способ

Функция Round

Пример:

X=
round(2.505, 2)

Значение х будет
2,5, а не 2,51.

Поэтому часто не
используется.

2 способ

Функция Format

Пример:

sngОкругление=Format(SngНеокругленное,
“#, 0.00”)

3 способ

Функция
FormatNumber

SngОкругление=
FormatNumber(sbgНеокругленное, 2)

Для изменения
знаков после запятой измените число нулей после десятичной точки в аргументе
Format, либо измените число, задающее значение второго аргумента, на нужное.

Примечание. Переменная, в которую помещается округленное значение, должна иметь тип
string, single, double, decimal, currency или variant, но не тип integer или
long.

Приведение
данных.
Для приведения введенных данных к нужному типу
в VBA включен обширный набор функций, одна из которых – CDBL. Синтаксис:
CDbl(выражение)

Обязательный
аргумент выражение является любым строковым или числовым выражением.
Для считывания информации, введенной в текстовое поле в созданной форме, вводят
переменную и прописывают выражение: А = Cdbl(textBoxN.text)

После чего с
данной переменной можно работать. Для выведения значений непосредственно в
ячейки книги Excel удобно использовать объект Range: range(«A5»).value = a

Функцией, обратной
по действию к CDbl, является функция CStr – она переводит числа в строки и
удобна для вывода результата либо в ячейку на лист, либо в то или иное
текстовое окно. TextBoxN.text = CStr(.Range(«A8»).value) – считывание
значения с ячейки и вывод его в текстовое окно.

Функция Trim
(строка) возвращает копию строки, из которой удалены пробелы, находящиеся в
начале и конце строки.

Приложение Б

Задания для
самостоятельной работы

Задание 1. Разработать программу, которая по введенным переменным в
соответствующие поля формы решает простейшее линейное уравнение y = a*x + b*x,
находит неизвестную переменную х и выводит результат вычислений на рабочий лист
Excel.

Задание 2. Разработать программу, которая по введенным переменным в
соответствующие поля формы решает уравнение вида y = a*x^3 + 3b*sinx, находит
неизвестную переменную х и выводит результат вычислений на рабочий лист Excel.

Задание 3. Разработать программу, которая по введенным переменным в
соответствующие поля формы решает уравнение вида y = 5a*x^1/3 + 3b*tg4x,
находит неизвестную переменную х и выводит результат вычислений на рабочий лист
Excel.

Задание 4.
Разработать программу, которая по введенным переменным в соответствующие поля
формы решает уравнение вида y = ln(a*x^3) + 3b*cos(e^x), находит неизвестную
переменную х и выводит результат вычислений на рабочий лист Excel.

Задание 5.
Разработать программу, которая по введенным переменным в соответствующие поля
формы решает уравнение вида y = ln(a*x^3) + 3b*
sin(x),
находит неизвестную переменную х и выводит результат вычислений на рабочий лист
Excel.

Задание 6.
Разработать программу, которая по введенным переменным в соответствующие поля
формы решает уравнение вида y = ln(a*x^3) + 3b, находит неизвестную переменную
х и выводит результат вычислений на рабочий лист Excel.

Задание 7.
Разработать программу, которая по введенным переменным в соответствующие поля
формы решает уравнение вида y = 5a*x^1/3 + 3b*
sin4x,
находит неизвестную переменную х и выводит результат вычислений на рабочий лист
Excel.

Задание 8.
Разработать программу, которая по введенным переменным в соответствующие поля
формы решает уравнение вида y = ln(a*x^3) + 3b*4x, находит неизвестную
переменную х и выводит результат вычислений на рабочий лист Excel.

Задание 9.
Разработать программу, которая по введенным переменным в соответствующие поля
формы решает уравнение вида y = ln(a*x^3) + b*x^3, находит неизвестную
переменную х и выводит результат вычислений на рабочий лист Excel.

Задание 10.
Разработать программу, которая по введенным переменным в соответствующие поля
формы решает уравнение вида y = a*x^3  + 3b*cos(e^x), находит неизвестную
переменную х и выводит результат вычислений на рабочий лист Excel.

 

Коллекции объектов

Ссылка на объект коллекции — это название коллекции, после которого в скобках указывается индекс объекта или его имя в кавычках. Например, ссылка Workbooks(1) выбирает первую из открытых рабочих книг, а Workbooks(«budget») ссылается на рабочую книгу с именем «budget».

Важно

  • Количество элементов коллекции заранее не фиксируется.
  • Новый элемент может быть добавлен в произвольное место коллекции.
  • Элементы коллекции перенумеровываются при удалении или добавлении элементов в коллекцию.
  • Различные коллекции объектов имеют общие методы и свойства, но параметры вызова методов могут различаться.

Объекты Workbooks и Workbook

Документ MS Excel (рабочая книга) это объект Workbook. Можно одновременно работать с несколькими рабочими книгами. Открытые рабочие книги составляют коллекцию рабочих книгWorkbooks.

Свойство Workbooks объекта Application возвращает объект Workbooks.

При открытии или создании рабочей книги элемент Workbook автоматически добавляется в конец коллекции Workbooks, а при закрытии книги соответствующий элемент также автоматически удаляется из коллекции.

Некоторые свойства и методы объектов Workbooks и Workbook

Свойства и методы Примеры операторов и комментарии
Объект Workbooks
Свойство Count (R/O Long) MsgBox «Число открытых рабочих книг » & Workbooks.Count высвечивает число рабочих книг в коллекции
Метод Add Workbooks.Add добавляет новую рабочую книгу в коллекцию
Метод Close Workbooks.Close используется без аргументов и закрывает все рабочие книги
Объект Workbook
Свойство Colors Свойство, заданное с индексом, указывает на конкретный элемент палитры. ActiveWorkbook.Colors(5) = RGB(255,0,0) заменяет пятый цвет палитры на красный
Свойство без индекса возвращает палитру цветов в виде массива из 56 цветов.

ActiveWorkbook.Colors = WorkbooksAIR.XLS»).Colors заменяет палитру активной книги на палитру цветов книги AIR.XLS.

Свойство Name (R/O String) MsgBox Workbooks(Workbooks.Count).Name высвечивает имя последней открытой книги
Свойство FullName (R/O String) MsgBox ActiveWorkbook.FullName возвращает полное имя активной рабочей книги, включая путь к ней
Свойство Sheets ThisWorkbook.Sheets.Count возвращает количество элементов в коллекции листов различных типов рабочей книги, содержащей выполняемый код
Свойство Charts ActiveWorkbook.Charts(1).Name возвращает имя первого листа в коллекции диаграммных листов активной книги
Свойство Worksheets Workbooks(1).Worksheets(1).Activate активизирует первый лист из коллекции рабочих листов
Метод Open Workbooks.Open «AIR.xls» открывает существующую рабочую книгу AIR.xls
Метод Close ActiveWorkbook.Close SaveChanges:=True, FilenameAIR« закрывает рабочую книгу. Книга удаляется из коллекции, и элементы коллекции Workbooks перенумеровываются.

Параметр SaveChanges сохраняет или отменяет сделанные изменения. Параметр Filename задает название новой рабочей книги

Метод Activate WorkbooksAIR.XLS»).Activate активизирует указанную рабочую книгу
Метод SaveAs ActiveWorkbook.SaveAs FileName:=»d:bel_accfirst_book» сохраняет рабочую книгу под именем Filename. Если в Filename папка не указана, то файл сохраняется в текущей папке
Событийные процедуры

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

Чтобы вставить событийную процедуру для объекта Workbook

  • выделите объект ThisWorkbook (Эта книга) в окне проекта;
  • перейдите на лист процедур, нажав клавишу F7. Можно выполнить команду View Code или сделать двойной щелчок на объект ThisWorkbook ;
  • на процедурном листе в окне выбора объектов (вверху слева) выберите объект Workbook ;
  • в окне выбора событий (вверху справа) выберите событие. Автоматически вставляется процедура со стандартным именем, которое состоит из названия объекта и названия события, разделенных нижним подчеркиванием (_), например, для события Open событийная процедура имеет имя Workbook_Open ;
  • запишите текст процедуры.

Пример

При вставке нового листа в рабочую книгу процедура запрашивает имя нового листа и вставляет лист в начало рабочей книги.

При выборе события NewSheet автоматически появляется новая процедура Workbook_NewSheet с параметром Sh.

Значение параметра, являющееся ссылкой на объект — новый лист, передается процедуре во время ее выполнения. Метод Move перемещает вставленный лист. Параметр before этого метода определяет новое месторасположение листа — начало рабочей книги.

Объекты Sheets, WorkSheets и WorkSheet

Коллекция Sheets представляет собой совокупность листов различных типов — рабочих листов (коллекция Worksheets ) и листов диаграмм (коллекция Charts ). Таким образом, каждый элемент коллекции Sheets является элементом коллекции WorkSheets или коллекции Charts и наоборот, любой элемент коллекции WorkSheets или коллекции Charts принадлежит коллекции Sheets.

Некоторые свойства и методы объектов Sheets, WorkSheets и WorkSheet

Свойства и методы Примеры и комментарии
Объекты Sheets, WorkSheets
Свойство Count (R/O Long) MsgBox «Количество рабочих листов в активной книге » & ActiveWorkbook.WorkSheets.Count высвечивает количество рабочих листов в рабочей книге
Метод Add Sheets.Add, WorkSheets.Add добавляет новый лист заданного типа в рабочую книгу
Объекты Sheets, WorkSheets, Sheet, WorkSheet
Методы Copy, Move Копирует, перемещает указанные листы или группу листов в новое место. Worksheets(1).Move after:=Worksheets(Worksheets.Count) перемещает первый лист в конец рабочей книги
Объекты Sheet, WorkSheet
Метод Activate WorkSheets(«January»).Activate активизирует указанный рабочий лист
Метод Delete ActiveWorkbook.Worksheets(1).Delete удаляет первый рабочий лист
Свойство Name (R/W String) Возвращает или устанавливает имя листа. WorkSheets(WorkSheets.Count).Name =»LastSheet» переименовывает последний рабочий лист
Объекты WorkSheet
Свойство Columns (R/O) Возвращает коллекцию столбцов. Worksheets(1).Columns(1).Font.Bold = True устанавливает полужирный шрифт для первой колонки первого рабочего листа
Свойство ScrollArea (R/W String) Определяет границы интервала, внутри которого возможно перемещение по ячейкам. При установке значения «пустая строка» доступны все ячейки рабочего листа. Worksheets(1).ScrollArea = «A1:F10» разрешает доступ только к ячейкам A1:F10
Свойство Shapes (R/O) Возвращает коллекцию Shapes — коллекцию графических объектов рабочего листа: рисунки, автофигуры и т.д. ActiveSheet.Shapes(1).AutoShapeType = 21 меняет тип первого графического объекта активного листа на «сердечко»
Свойство Rows(R/O) Возвращает коллекцию строк. Worksheets(«Sheet1»).Rows(3).Delete удаляет третью строку
Метод Calculate ActiveWorksheet.Calculate производит вычисления во всех ячейках указанного рабочего листа
Метод CheckSpelling Используется для проверки правописания (с аргуменами и без аргументов). ActiveSheet.CheckSpelling ignoreUppercase:= True не проверяет слова, записанные только прописными буквами
Методы
Метод Add

Добавляет новый лист в коллекцию Sheets, WorkSheets. При создании рабочей книги коллекция WorkSheets содержит столько рабочих листов, сколько определено свойством SheetsInNewWorkbook объекта Application.

Внимание

  • Метод Add для объектов Workbooks и Sheets имеет различный синтаксис.

Cинтаксис метода для коллекций Sheets, WorkSheets

expression.Add([Before] [,After] [,Count] [,Type])
  • expression — выражение, возвращающее коллекцию WorkSheets или Sheets. Указание обязательно;
  • Before 1Возможно задание только одного из двух параметров Before или After
    — специфицирует лист, перед которым вставляется новый лист;
  • After 2Возможно задание только одного из двух параметров Before или After
    — специфицирует лист, после которого вставляется новый лист;
  • Count — количество вставляемых листов;
  • Type — тип вставляемого листа. Используются константы: xlWorksheet (по умолчанию), xlChart (только для объекта Sheets ), xlExcel4MacroSheet, xlExcel4IntlMacroSheet.

Важно

  • При отсутствии всех параметров один рабочий лист добавляется перед активным листом.
  • При задании параметров Before и After указывается ссылка на лист как индекс или имя в коллекции листов, например, Sheets(1) или Sheets(«Лист1»)
Методы Move и Select

Метод Move используется для перемещения листов.

Синтаксис expression.Move([Before] [,After])

  • expression — ссылка на объект, представляющий перемещаемый лист. Указание обязательно;
  • необязательные параметры before и after (ссылки на лист, см. описание метода Add ) определяют новое местоположение перемещаемого листа. Если не указан ни один из параметров, то лист перемещается во вновь создаваемую рабочую книгу.

Метод Select выделяет объект. При применении к одному листу методы Activate и Select активизируют указанный лист. Но метод Select используется для группировки листов, т.е. для расширения выделения.

Синтаксис expression.Select([Replace])

  • expression — ссылка на объект, представляющий выделяемый лист. Указание обязательно;
  • Replace — для расширения выделения аргумент устанавливается в False. Если аргумент не задан или принимает значение True, то вместо старой области выделения создается новая область выделения. Необязательный параметр.

Замечание

  • Для выделения листов с конкретными именами используйте функцию Array. Например, Sheets(Array(«Лист8», «Лист12»)).Select.

Пример

Процедура перемещает нечетные листы в конец рабочей книги. В цикле выделяются нечетные листы.

Событийные процедуры

Чтобы вставить событийную процедуру для объекта WorkSheet:

  • выделите объект WorkSheet (например, Лист1 ) в окне проекта;
  • перейдите на лист процедур этого объекта;
  • на процедурном листе в окне объектов (вверху слева) выберите объект WorkSheet ;
  • в окне выбора событий (вверху справа) выберите событие;
  • запишите текст процедуры.

При выборе события автоматически вставляется процедура со стандартным именем, которое состоит из названия листа и названия события, разделенных нижним подчеркиванием (_).

Пример

При активизации листа Лист1 в ячейку A1 заноситcя название листа.

Пример работы с событийной процедурой объекта WorkSheet

Рис.
8.8.
Пример работы с событийной процедурой объекта WorkSheet

Объект Range

При работе в MS Excel чаще всего выполняются некоторые действия с группой ячеек рабочего листа. Объект Range — это отдельная ячейка, целиком строка или столбец рабочего листа, выделенный интервал ячеек, непрерывный интервал ячеек или интервал несмежных ячеек.

Для задания объекта Range существуют различные возможности. Например, благодаря свойству ActiveCell, активная ячейка представляется в качестве объекта Range. Свойство Selection определяет выделенный интервал ячеек в качестве объекта Range.

Свойства и методы, возвращающие объект Range

Свойства и методы Применимы к объектам Примеры и комментарии
Свойство ActiveCell Application Оператор ActiveCell.Value=10 устанавливает значение активной ячейки равным 10
Свойство Areas Range Оператор Range(«A1, B5:B10, C12:C20»).Areas(3).Value = 10 устанавливает значение 10 для третьей области объекта Range — для ячеек интервала C12:C20
Свойство Cells Application, Range, Worksheet Оператор Cells(7,3).Select активизирует ячейку C7 и равносилен оператору Range(«C7»).Select
Свойство Columns Application, Range, Worksheet Оператор Columns(«A:D»).Select выделяет первые четыре столбца
Свойство CurrentRegion Range Оператор ActiveCell.CurrentRegion.Count подсчитывает количество ячеек с данными в интервале, окружающем активную ячейку
Свойство Offset Range Операторы Range («A2:B10»).Select, Selection.Offset(2,2).Value=10 устанавливают значение 10 каждой ячейки интервала C4:D12.

Равносильно записи Range(«C4:D12»).Value=10

Свойство Range Application, Range, Worksheet Операторы p=Range(«A:B»).Count, p=Range(«налог»).Count, p=ActiveSheet.Range(«A1:A10«).Count, p=Range(«1:3»).Count, p=Range(«A1:C2, B10:D24″).Count присваивают переменной p количество ячеек в заданных интервалах
Свойство Rows Application, Range, Worksheet Оператор Rows(«1:3»).Select выделяет первые три строки
Свойство Selection Application Оператор Selection.Clear очищает выделенный интервал ячеек
Метод Union Range Union(Range(«A1:C5»), Range(«B10:D12») объединяет два несмежных интервала в один объект Range

ЗАМЕЧАНИЯ

  • Все перечисленные свойства возвращают объект Range, не активизируя новую ячейку.
  • Ячейка остается активной до тех пор, пока методы Activate или Select не активизируют новую ячейку.

Понравилась статья? Поделить с друзьями:
  • Объекты программы microsoft excel ответы
  • Объекты приложения ms word
  • Объекты объектной модели excel
  • Объекты надпись для word
  • Объекты надпись в word что это