Объекты microsoft excel объекты Microsoft Excel icon

Объекты microsoft excel объекты Microsoft Excel




Скачати 214.49 Kb.
НазваОбъекты microsoft excel объекты Microsoft Excel
Дата05.05.2013
Розмір214.49 Kb.
ТипДокументи
1. /методичка/ОБЪЕКТЫ MICROSOFT EXCEL.doc
2. /методичка/ПРАКТИКА ь1 - функции в Excel.doc
3. /методичка/ПРАКТИКА ь2 - APPLICATION.doc
4. /методичка/ПРАКТИКА ь3 - WOORKSHEETS,WOORKBBOKS,SHAPE.doc
5. /методичка/ПРАКТИКА ь4 - RANGE.doc
6. /методичка/ПРАКТИКА ь5 - создание формы.doc
7. /методичка/ПРАКТИКА ь6 - форма и элементы управления.doc
8. /методичка/ПРАКТИКА ь7- продолжение элементов управления.doc
Практическое задание №8. Элементы управления
Практическое задание №2. Форма и элементы управления. Форма
Практическое задание №7. Элементы управления. Переключатель
Практическая работа №3. Свойства и методы объекта range свойства объекта Range
Workbook из семейства workbooks – файл рабочей книги. Свойства объекта WorkBook
Практическое задание на тему: «основные объекты в vba of ms excel». Объект application
Практическое задание №1. Microsoft excel, разработка приложений
Объекты microsoft excel объекты Microsoft Excel


ОБЪЕКТЫ MICROSOFT EXCEL

Объекты Microsoft Excel

Работа с объектом Application
Работа с объектом Workbook
Работа с объектом Range
Строковые ссылки в стиле А1 или имена диапазонов
Работа с событиями.
Как получить справку по Visual Basic для Microsoft Excel
Объекты Microsoft Excel


Работа с объектом Application


Большинство свойств объекта Application Microsoft Excel управляет внешним видом окна Microsoft Excel или глобальными аспектами поведения этого приложения. Например, если видима строка формул, значение свойства DisplayFormulaBar равно True, а если отключено обновление экрана, значение свойства ScreenUpdating равно False.

Кроме того, свойства объекта Application обеспечивают доступ к ?нижестоящим? объектам в иерархии, например, к набору Windows (представляющие все открытые в данный момент окна) или набору Workbooks (представляющему все открытые в данный момент рабочие книги). Такие свойства, иногда называемые аксессорами, позволяют проходить по иерархии объектов от вершины (Application) до объектов более низких уровней (Workbook, Worksheet, Range и т.д.). Подробнее о модели объектов см. главу 2 ?Введение в модели объектов?.

Некоторые свойства и методы, применимые к объекту Application, применимы и к объектам, расположенным на более низких уровнях иерархии. Использование подобных свойств или методов на уровне Application обычно приводит к изменению всех открытых рабочих книг или листов. Например, метод Calculate применим к объектам Application, Workbook и Worksheet. Выражение Application. Calculate вызывает пересчет данных на всех рабочих листах во всех открытых книгах, а применение этого метода к объектам Workbook или Worksheet позволяет соответственно сузить масштабы пересчета.

Работа с объектом Workbook


Открытие рабочей книги
Создание и сохранение рабочей книги
Закрытие рабочей книги


Открывая или сохраняя файл в Microsoft Excel, Вы фактически открываете или сохраняете рабочую книгу. Поэтому для работы с файлами в Visual Basic используются методы объекта Workbook или набора Workbooks.

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


Рабочая книга открывается методом Open. Он всегда применяется для набора Workbooks, ссылку на который можно получить через свойство Workbooks. Вот как выглядит код, открывающий файл Bookl.xls (в текущем каталоге) и показывающий значение из ячейки А1 на первом листе данной книги:


Sub OpenBook1()
     Set myBook = Workbooks.Open(Filename:="BOOK1.XLS")
     MsgBox myBook.Worksheets (1) .Range("A1") .Value
End Sub



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

Имя файла в этом примере не содержит пути, и таким образом подразумевается, что файл расположен в текущей папке. Это обязательно даст ошибку в период выполнения ? как только пользователь сменит текущую папку, Visual Basic не найдет файл.

Есть два сравнительно безопасных места хранения рабочих книг, которые Вы собираетесь открывать программно. Первое ? папка, где хранится исполняемый файл Microsoft Excel. Второе ? папка Library, создаваемая при установке автоматически; она находится на один уровень ниже той, где хранится исполняемый файл Microsoft Excel.

Чтобы открыть книгу, хранящуюся в папке, где расположен исполняемый файл, можно использовать свойство Path ? оно возвращает строку, определяющую путь к данной папке. Свойство PathSeparator возвращает символ-разделитель, корректный в данной файловой системе, например, обратную косую черту (\) для FAT MS-DOS╝ и Windows╝ или точку с запятой (;) для Macintosh╝. В следующем примере показан независимый от файловой системы код, с помощью которого можно открывать Bookl.xls, исходя из предположения, что этот файл хранится в той же папке, что и исполняемый файл.

 

Sub OpenBook1()
     EXEPath = Application.Path & Application.PathSeparator
     fName = EXEPath & "BOOK-1.XLS"
     Set myBook = Workbooks.Open(Filename:=fName)
     MsgBox myBook.Worksheets (1).Range ("А1").Value
End Sub



Другое сравнительно безопасное место хранения рабочей книги ? папка Library. Чтобы получить строку с путем к этой папке, используйте вместо свойства Path свойство LibraryPath. Вот как можно применить свойство LibraryPath:


Sub OpenBook1()
     LibPath = Application.LibraryPath & Application.PathSeparator
     fName = LibPath & "BOOK1.XLS"
     Set myBook = Workbooks.Open(Filename:=fName)
     MsgBox myBook.Worksheets (1) .Range ("А1").Value
End Sub



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


Sub DemoGetOpenFilename()
     Do
          fName = Application .GetOpenFilename
     Loop Until fName <> False
     MsgBox "Opening " & fName
     Set myBook = Workbooks.Open(Filename:=fName)
End Sub


Создание и сохранение рабочей книги


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

При первом сохранении новой книги применяйте метод SaveAs, а в последующем ? метод Save. Метод GetSaveAsFilename очень похож на метод GetOpenFilename, описанный в предыдущем разделе. Попробуем создать книгу и сохранить ее методом GetSaveAsFilename:


Sub CreateAndSave()
     Set newBook = Workbooks.Add
     Do
          fName = Application.GetSaveAsFilename
     Loop Until fName <> False
     newBook.SaveAs Filename :=fName
End Sub


Закрытие рабочей книги


Для закрытия книги предназначен метод Close объекта Workbook. В следующем примере книга закрывается без сохранения последних изменений:


Sub OpenChangeClose()
     Dо
          fName = Application.GetOpenFilename
     Loop Until fName <> False
     Set myBook = WorkBooks.Open(Filename:=fName)
     ' здесь вносим какие-то изменения в myBook
     myBook.Close savechanges:=False
End Sub


Работа с объектом Range


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

ActiveCell

DirectDependents

RowFields

BottomRightCell

DirectPrecedents

RowRange

Cells

EntireColumn

Rows

ChangmgCells

EntireRow

Selection

CircularReference

Next

TableRange1

Columns

Offset

TableRange2

CurrentArray

PageRange

TopLeftCell

CurrentRegion

Precedents

UsedRange

Dependents

Range

VisibleRange

Подробнее об этих свойствах и методах см. соответствующие разделы справочной системы.

Строковые ссылки в стиле А1 или имена диапазонов


Числовые индексы строк и колонок
Свойство Offset
Свойства CurrentRegion и UsedRange
Организация циклов для перебора ячеек диапазона
Применение свойства Address для отладки кода, работающего с объектом Range


Строковые ссылки в стиле А1 или имена диапазонов

Самый распространенный способ получить объект Range ? сделать ссылку в стиле А1 или по имени диапазона, как показано в таблице:

Чтобы:

Напишите:

Изменить значение в ячейке А1на листе Sheet1

Worksheets("Sheet1").Range( "А1") .Value = 3

Установить формулу для ячейки Bl на активном листе

Range("B1") .Formula = "=5-10*RAND()"

Присвоить значение всем ячейкам диапазона С1:ЕЗ на активном листе

Range("C1:E3").Value = 6

Очистить содержимое диапазона А1:ЕЗ на активном листе

Range("A1", "E3").ClearContents

Установить полужирное начертание шрифта для диапазона myRange (имя на уровне книги)

Range("myRange"). Font. Bold = True

Присвоить значение всем ячейкам диапазона yourRange (имя на уровне листа)

Range( "Sheetl!yourRange"). Value = 3

Присвоить объектной переменной ссылку на диапазон

Set objRange = Range( "myRange")

Помните, что выражения типа Range( "С1 : Е3" ) . Value = 6 подразумевают обращение к свойству Range активного листа. Если Вы попытаетесь выполнить это выражение в тот момент, когда активен лист диаграммы, произойдет ошибка периода выполнения (с кодом 1004).

Еще одна причина ошибок ? использование свойства Range в качестве аргумента другого метода без полного описания объекта Worksheet, к которому оно относится. В следующем примере, который должен был бы сортировать диапазон ячеек на листе Sheet1, тоже возникает ошибка периода выполнения 1004:


Sub SortRange()
     Worksheets( "Sheet1 ").Range("A1:B10") .Sort
     key1 :=Range("A1" ), order1 :=xlDescending
End Sub



Такую ошибку обнаружить труднее, поскольку строка, из которой вызывается метод Sort, сама по себе корректна. Ошибка возникает во второй строке, где указан аргумент key1. Этот код будет работать правильно, если активным листом является Sheet1, но приведет к ошибке при обращении к нему из другого листа или модуля. Во избежание подобных ошибок используйте при задании аргумента свойство Worksheets:


Sub SortRange()
     Worksheets("Sheet1").Range("A1 :B10").Sort
     key1 : Worksheets ("Sheet1") .Range("A1"), order1 :=xlDescending
End Sub



Числовые индексы строк и колонок


Получить нужную ячейку можно и так: указать индексы строки и колонки, на пересечении которых она находится. Первым задается индекс строки, за ним следует индекс колонки.

Чтобы:

Напишите:

Изменить значение в ячейке А1 на листе Sheet1

Worksheets( "Sheet1").Cells(1, 1). Value = 3

Задать формулу для ячейки Bl на активном листе

Cells(1, 2) .Formula - "=5-10*RAND()

Установить объектную переменную

Set objRange = Worksheets( "Sheetl") .Cells(1, 1)

Числовые индексы строк и колонок очень удобны при обращении к ячейке по значению счетчика цикла. Например, следующий код перебирает все ячейки диапазона А1:D10 на листе Sheet1. Если какая-нибудь ячейка содержит значение 0.01, оно заменяется нулем.


Sub RoundToZero()
     For rwIndex = 1 to 4
          For colIndex = 1 to 10
               If Worksheets("Sheet1").Cells(rwIndex, colIndex) < .01 Then
                    Worksheets("Sheet1").Cells(rwIndex, colIndex).Value = 0
               End If
          Next colIndex
     Next rwIndex
End Sub



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


Sub ListNames()
     Set newSheet = Worksheets.Add
     i = 1
     For Each nm In ActiveWorkbook.Names
          newSheet.Cells(i, 1).Value = nm.Name
          newSheet.Cells (i, 2).Value = " ' " & nm.RefersTo
          i = i + 1
     Next nm
     newSheet.Columns("A:B") .AutoFit
End Sub


Свойство Offset


Весьма часто возникает необходимость обратиться к диапазону ячеек, который отстоит от другого диапазона на определеннее число строк и колонок. Свойство Offset объекта Range принимает аргументы RowOffset и ColumnOffset и возвращает новый диапазон. В следующем примере программа определяет тип данных в каждой ячейке из диапазона A1 : A10 и перечисляет эти типы в колонке, расположенной справа от исходных ячеек:


Sub ScanColumn()
     For Each с In Worksheets("Sheet1").Range("A1 :A10").Cells
          If Application.lsText(c.Value) Then
               c.0ffset(0, 1).Formula = "Text"
          Elself Application.lsNumber(c.Value) Then
               c.0ffset(0, 1).Formula = "Number"
          Elself Application.IsLogical(c.Value) Then
               c.0ffset(0, 1).Formula = "Boolean"
          Elself Application.lsError(c.Value) Then
               c.0ffset(0, 1).Formula = "Error"
          Elself с .Value = "" Then
               c.0ffset(0, 1).Formula = "(blank cell)"
          End if
     End c
End Sub


Свойства CurrentRegion и UsedRange


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

CurrentRegion ? свойство объекта Range. На листе может быть несколько текущих регионов ? все зависит от того, к какому объекту Range Вы обращаетесь.

Допустим, лист Sheet1 содержит список, для которого Вы хотите установить формат чисел. Единственное, что известно об этом списке, ? он начинается с ячейки А1; число строк и колонок в нем Вы не знаете. В следующем примере показано, как отформатировать такой список через свойство CurrentRegion:


Sub FormatRange()
     Set myRange = Worksheets("Sheet1").Range("A1").CurrentRegion
     myRange.NumberFormat = "0.0"
End Sub



Использованный диапазон (used range) ограничен левой верхней и правой нижней заполненными ячейками, наиболее удаленными друг от друга. В этом диапазоне содержатся все заполненные ячейки листа, а также расположенные между ними пустые ячейки. На листе может быть только один такой диапазон, и UsedRange является свойством объекта Worksheet, а не Range.

Пусть активный лист содержит результаты каких-то измерений за определенный период времени. В первой колонке использованного диапазона записаны даты, во второй ? время, а в третьей и четвертой ? результаты измерений. Вы хотите написать код, который объединяет пары ?дата-время? в одно значение, преобразует время из GMT (Greenwich Mean Time ? время по Гринвичу) в PST (Pacific Standard Time ? стандартное время Тихоокеанского побережья США) и применяет к полученному значению формат даты. В таблице могут быть пустые строки и колонки. Чтобы получить весь использованный диапазон, включая пустые строки, можно задействовать свойство UsedRange. Вот один из вариантов преобразования и форматирования дат и времени:


Sub ConvertDates()
     Set myRange = ActiveSheet.UsedRange
     myRange.Columns ("C") .Insert
     Set dateCol = myRange.Columns("C")
     For Each с In dateCol.Cells
          If c.0ffset(0, -1).Value <> "" Then
               c.FormulaR1C1 = "=RC[-2]+RC[-1]-(8/24)"
          End If
     Next с
     dateCol.NumberFormat = "mrnm-dd-yyyy hh:mm"
     dateCol.Copy
     dateCol.PasteSpecial Paste.: =xlValues
     my Range.Columns( "A:B" ).Delete
     dateCol.AutoFit
End Sub



Заметьте: чтобы получить третью колонку в использованном диапазоне, применяется выражение ActiveSheet. UsedRange. Columns( "С"), но на самом листе эта колонка может быть любой по счету ? использованному диапазону могут предшествовать пустые колонки.

Другие свойства и методы объекта Range позволяют строить весьма сложные выражения, возвращающие поддиапазоны (subranges) или наддиапазоны (super-ranges) этого объекта. Среди свойств и методов, обычно применяемых с этой целью, можно отметить Areas, Cells, Columns, EntireColumn, EntireRow, Range и Rows.


Организация циклов для перебора ячеек диапазона


Есть несколько способов перебора ячеек диапазона в цикле. Примеры из этого раздела демонстрируют использование с этой целью операторов For Each...Next и Do...Loop.

For Each ? Next
Do ? Loop

Применение свойства Address для отладки кода, работающего с объектом Range


У любого объекта Range есть свойство Address, которое возвращает адрес ячеек диапазона в виде строки. В следующем примере при отладке процедуры HideColumns используется свойство Address:


Sub HideColumns()
     Set r = Worksheets( "Sheet1 ").UsedRange
     MsgBox r.Address ' только при отладке!
     For i = 1 To r.Columns.Count
          If i Mod 2 = 0 Then
               r.Columns(i).Hidden = True
               MsgBox r.Columns(i).Address ' только при отладке!
          End If
     Next i
End Sub



Окна с сообщениями можно заменить контрольными выражениями (watch expressions). В предыдущем примере можно было бы установить два таких выражения ? r.Address и r.Columns(i).Address ? и понаблюдать за их значениями в окне Immediate (Проверка). Подробнее об отладке см. главу 14 ?Отладка и обработка ошибок?.

Работа с событиями.


Включение и отключение обработки событий
Использование событий, связанных с рабочими листами
События на уровне рабочего листа
События на уровне диаграммы
События на уровне рабочей книги
События на уровне приложения
Модули классов и события



Если Вы раньше работали с Visual Basic (Standard, Professional или Enterprise Edition), то событийно-управляемое программирование Вам уже знакомо; большая часть кода, написанная Вами на Visual Basic, вероятно, предназначалась для обработки таких событий, как щелчок кнопки мыши или загрузка формы. Может быть, в Microsoft Excel Вам доводилось использовать события типа OnSheetActivate или OnEntry, запуская макрос при активизации или изменении листа. И это тоже событийно-управляемое программирование. В Microsoft Excel 97 набор событий расширен и в него добавлены процедуры обработки событий, принимающие аргументы.

Microsoft Excel 97 допускает написание процедур обработки событий на уровне листа, диаграммы, книги или приложения. Например, событие Activate происходит на уровне листа, а событие SheetActivate доступно как на уровне книги, так и на уровне приложения. Событие SheetActivate для книги возникает при активизации любого из ее листов, а на уровне приложения ? при активизации любого листа открытых в данный момент книг.

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

Включение и отключение обработки событий


Для включения или отключения обработки событий предназначено свойство EnableEvents. Например, при сохранении книги методом Save возникает событие BeforeSave. Вы можете предотвратить это событие, установив свойство EnableEvents как False перед вызовом метода Save:

Application.EnableEvents = False
ActiveWorkbook.Save
Application.EnableEvents = True


Использование событий, связанных с рабочими листами


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

Щелкните правой кнопкой мыши ярлычок листа, выберите в контекстном меню команду View Code (Исходный текст) и укажите в списке Procedure (Процедура) имя нужного события.

Выберите из меню Tools (Сервис) команду Macro (Макрос), затем ? Visual Basic Editor (Редактор Visual Basic). Теперь выберите в окне проекта интересующий Вас лист и либо щелкните кнопку View Code (Программа), либо вызовите из меню View (Вид) команду Code (Программа). В списке Object (Объект) укажите строку Worksheet или Chart, а в списке Procedure (Процедура) ? имя события.

События на уровне рабочего листа


События на уровне листа возникают при активизации листа или изменении его ячеек, как показано в таблице:

Событие

Описание

Activate

Возникает при активизации листа. Используйте это событие вместо свойства OnSheetActivate.

BeforeDoubleClick

Возникает при двойном щелчке ячейки листа. Используйте это событие вместо свойства OnDoubleClick.

BeforeRightClick

Возникает при щелчке ячейки листа правой кнопкой мыши.

Calculate

Возникает при пересчете листа. Используйте это событие вместо свойства OnCalculate.

Change

Возникает при изменении формулы в ячейке. Используйте это событие вместо свойства OnEntry.

Deactivate

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

SelectionChange

Возникает при выделении ячейки листа.

Подробнее об этих событиях см. соответствующие разделы справочной системы.

Примеры

В следующем примере при каждом пересчете листа происходит коррекция размеров колонок от А до F:


Private Sub Worksheet_Calculate()
     Columns("A:F").AutoFit
End Sub



Некоторые события позволяют изменять стандартное поведение приложения. Например, можно перехватывать щелчки правой кнопкой мыши и добавлять в контекстное меню для ячеек В1:В10 новую команду:


Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
     For Each icbc In Application.CommandBars("cell").Controls
          If icbc.Tag = "brccm" Then icbc.Delete
     Next icbc
     If Not Application.lntersect(Target, Range("b1:b10")) Is Nothing Then
          With Application.CommandBars("cell").Controls
               .Add(Type:=msoControlButton, before:=6, temporary:=True)
                .Caption = "New Context Menu Item"
                .OnAction = "MyMacro"
                .Tag = "brccm"
          End With
     End If
End Sub


События на уровне диаграммы


События на уровне диаграммы, как и на уровне рабочего листа, происходят при ее активизации или изменении и описаны в таблице:

Событие

Описание

Activate

Возникает при активизации листа диаграммы (не работает для внедренных диаграмм). Используйте это событие вместо свойства OnSheetActivate.

BeforeDoubleClick

Возникает при двойном щелчке диаграммы. Используйте это событие вместо свойства OnDoubleClick.

BeforeRightClick

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

Calculate

Происходит, когда пользователь инициирует построение диаграммы по новым или измененным данным.

Deactivate

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

DragOver

Возникает при перемещении мышью данных поверх диаграммы.

DragPlot

Возникает при перемещении мышью диапазона ячеек поверх диаграммы.

MouseDown

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

MouseMove

Возникает при перемещении указателя мыши над диаграммой.

MouseUp

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

Resize

Возникает при изменении размера диаграммы.

Select

Возникает при выделении какого-либо элемента диаграммы.

SeriesChange

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

Подробнее об этих событиях см. соответствующие разделы справочной системы.

События, связанные с листами диаграмм, доступны в редакторе Visual Basic по умолчанию. Чтобы написать процедуру обработки события для внедренной диаграммы, создайте новый объект в модуле класса с помощью ключевого слова WithEvents (см. раздел ?Модули классов и события? далее в этой главе).

Пример

Эта процедура изменяет на диаграмме цвет точки при изменении пользователем ее значения:


Private Sub Chart_SeriesChange(ByVal Seriesindex As Long._
     ByVal Pointindex As Long)
     Set p = ActiveChart.SeriesCollection(Serieslndex).Points(Pointlndex)
     p.Border .ColorIndex = 3
End Sub


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


События на уровне книги происходят при изменении книги или любого из ее листов.

Событие

Описание

Activate

Возникает при активизации книги.

AddIninstall

Происходит, когда пользователь устанавливает данную книгу как надстройку. Используйте это событие вместо макроса Auto_Add.

AddInUninstall

Возникает при отмене использования данной книги как надстройки. Применяйте это событие вместо макроса Auto_Remove.

Beforeclose

Возникает перед закрытием книги. Используйте это событие вместо макроса Auto_Close.

BeforePrint

Возникает перед выводом книги на печать.

BeforeSave

Возникает перед сохранением книги. Используйте это событие вместо свойства OnSave.

Deactivate

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

NewSheet

Возникает при создании нового листа.

Open

Возникает при открытии книги. Используйте это событие вместо макроса Auto_0pen.

SheetActivate

Возникает при активизации одного из листов книги. Используйте это событие вместо свойства OnSheetActivate.

SheetBeforeDoubleClick

Возникает при двойном щелчке ячейки листа (не предназначено для листов диаграмм). Используйте это событие вместо свойства OnDoubleClick.

SheetBeforeRightClick

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

SheetCalculate

Возникает при пересчете одного из листов книги (не предназначено для листов диаграмм). Используйте это событие вместо свойства OnCalculate.

SheetChange

Возникает при изменении формулы в ячейке (не предназначено для листов диаграмм). Используйте это событие вместо свойства OnEntry.

SheetDeactivate

Возникает при активизации другого листа книги. Используйте это событие вместо свойства OnSheetDeactivate.

SheetSelectionChange

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

WindowActivate

Происходит, когда в результате действий пользователя любое окно, в котором отображается данная книга, оказывается в фокусе. Используйте это событие вместо свойства OnWindow.

WindowDeactivate

Происходит, когда в результате действий пользователя любое окно, в котором отображается данная книга, теряет фокус. Используйте это событие вместо свойства OnWindow.

WindowResize

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

Подробнее об этом см. соответствующие разделы справочной системы.

Пример

Эта процедура разворачивает окно приложения Microsoft Excel при открытии книги:


Sub Workbook_0pen()
     Application.WindowState = xlMaximized
End Sub


События на уровне приложения


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

Событие

Описание

NewWorkbook

Возникает при создании новой книги.

SheetActivate

Возникает при активизации листа в открытой книге. Используйте это событие вместо свойства OnSheetActivate.

SheetBeforeDoubleClick

Возникает при двойном щелчке ячейки листа в открытой книге (не предназначено для листов диаграмм). Используйте это событие вместо свойства OnDoubleClick.

SheetBeforeRightClick

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

SheetCalculate

Возникает при пересчете листа в открытой книге (не предназначено для листов диаграмм). Используйте это событие вместо свойства OnCalculate.

SheetChange

Возникает при изменении формулы в ячейке в открытой книге (не предназначено для листов диаграмм). Используйте это событие вместо свойства OnEntry.

SheetDeactivate

Возникает при деактивизации листа в открытой книге. Используйте это событие вместо свойства OnSheetDeactivate.

SheetSelectionChange

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

WindowActivate

Происходит, когда пользователь устанавливает фокус на одно из открытых окон. Используйте это событие вместо свойства OnWindow.

WindowDeactivate

Происходит, когда в результате действий пользователя одно из открытых окон теряет фокус. Используйте это событие вместо свойства OnWindow.

WindowResize

Возникает при изменении размеров одного из открытых окон.

WorkbookActivate

Происходит, когда пользователь устанавливает фокус на одну из открытых книг.

WorkbookAddInInstall

Возникает при установке книги как надстройки.

WorkbookAddInUninstall

Возникает при отмене использования данной книги как надстройки.

WorkbookBeforeClose

Возникает перед закрытием книги.

WorkbookBeforePrint

Возникает перед выводом книги на печать.

WorkbookBeforeSave

Возникает перед сохранением книги.

WorkbookDeactivate

Происходит, когда в результате действий пользователя одна из открытых книг теряет фокус.

WorkbookNewSheet

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

WorkbookOpen

Возникает при открытии книги.

Подробнее об этом см. соответствующие разделы справочной системы.

Модули классов и события


В отличие от листов диаграмм, события, связанные с внедренными диаграммами и объектом Application, по умолчанию отключены. Прежде чем Вы сможете работать с событиями применительно к внедренной диаграмме или объекту Application, Вы должны создать новый модуль класса и объявить в нем объект типа Chart или Application с событиями. Для создания нового модуля класса в редакторе Visual Basic предназначена команда Class Module (Модуль класса) из меню Insert (Вставка).

Чтобы включить события для объекта Application, добавьте в модуль класса объявление:


Public WithEvents Арр As Application


После того как новый объект с событиями объявлен, он появляется в списке Object (Объект) модуля класса, и Вы можете писать для него процедуры обработки событий. [При выборе этого объекта в списке Object (Объект) события, допустимые для него, перечисляются в списке Procedure (Процедура).]

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


Public Х As New EventGlass


где EventClass ? имя модуля класса, созданного Вами для обработки событий.

Создав объектную переменную Х (экземпляр класса EventClass), Вы можете приравнять объект Арр класса EventClass объекту Application Microsoft Excel:


Sub InitializeApp()
     Set X.Арр = Application
End Sub



После выполнения процедуры InitializeApp объект Арр в модуле класса EventClass указывает на объект Application Microsoft Excel, и определенные в модуле процедуры обработки событий будут выполняться при каждом возникновении соответствующих событий.

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


Public WithEvents cht As Chart


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


Dim С1 As New EventClass
Dim C2 As New EventClass


Sub IntitializeCharts()
     Set Cl.cht = Worksheets(1).ChartObjects(1).Chart
     Set C2.cht = Worksheets(1).Chart0bjects(2).Chart
End Sub



В модуле класса допускается объявлять объекты Worksheet или Workbook с событиями и использовать процедуры обработки событий нового класса с несколькими листами ? в дополнение к стандартным процедурам обработки событий. Это позволяет написать процедуру обработки события Activate, выполняемую только при активизации, скажем, первого или пятого листа. Или использовать объект Chart, объявленный в модуле класса, чтобы создать процедуру обработки событий как для внедренных диаграмм, так и для листов диаграмм.

Как получить справку по Visual Basic для Microsoft Excel


Чтобы использовать справочную систему Visual Basic для Microsoft Excel, выберите при установке Office вариант Custom (Выборочная) и пометьте флажок Online Help for Visual Basic (Справка по Visual Basic) для Microsoft Excel. В ином случае программа Setup не установит справочную систему Visual Basic. Если Вы уже установили Microsoft Excel, то справочную систему Visual Basic можно добавить, запустив программу Setup еще раз.

Для просмотра содержания и предметного указателя справочной системы Visual Basic в Microsoft Excel, выберите из меню Help (?) редактора Visual Basic команду Contents and Index (Содержание и предметный указатель). На вкладке Contents (Содержание) диалогового окна Help Topics (Справочная система) дважды щелкните строку Microsoft Excel Visual Basic Reference (Справочник по Microsoft Excel Visual Basic), а затем ? ярлык Shortcut to Microsoft Excel Visual Basic Reference (Вызов справочника по Microsoft Excel Visual Basic). На экране вновь появится диалоговое окно Help Topics (Справочная система), но на этот раз Вы увидите в нем содержание и предметный указатель справочной системы Visual Basic для Microsoft Excel.

Объекты Microsoft Excel


Visual Basic поддерживает набор объектов, соответствующих элементам Microsoft Excel, и с большинством из них Вы знакомы, если работали с пользовательским интерфейсом этого приложения. Например, объект Workbook представляет книгу, объект Worksheet ? рабочий лист, объект Range ? диапазон ячеек. Каждый элемент Microsoft Excel ? книга, лист, диаграмма, ячейка и т.д.? можно представить в Visual Basic объектом. Создавая процедуры, управляющие этими объектами, Вы автоматизируете выполнение операций в Microsoft Excel. Модель объектов Microsoft Excel 97 существенно изменена и дополнена. Схему модели объектов Microsoft Excel 97 Вы найдете в разделе ?Microsoft Excel Objects? справочной системы, а список изменений и дополнений в сравнении с предыдущей версией ? в разделе ?Changes to the Microsoft Excel 97 Object Model?.

В Microsoft Excel 97 введена поддержка событийно-управляемого программирования на Visual Basic. Событие ? любое действие, распознаваемое объектом Microsoft Excel. Некоторые объекты Microsoft Excel распознают предопределенные наборы событий: чтобы задать конкретную реакцию объекта на то или иное событие, Вы можете написать для него процедуру обработки события на Visual Basic.



Схожі:

Объекты microsoft excel объекты Microsoft Excel iconФайл/Создать/Папку
Запустите программу «Microsoft Excel» (меню Пуск/Программы/ Microsoft Office/ Microsoft Excel)
Объекты microsoft excel объекты Microsoft Excel iconЛабораторна робота №9: "Табличний процесор Microsoft Excel"
Мета роботи: Удосконалитися в тому, що електронні таблиці (ЕТ) є ефективний засіб обробки числової інформації. Навчитися створювати...
Объекты microsoft excel объекты Microsoft Excel iconПуск/Программы/ Microsoft Excel
Откройте в ms excel файл Заказы xls из папки LabExcel. Просмотрите его, переключаясь между листами
Объекты microsoft excel объекты Microsoft Excel iconРедактор таблиц microsoft excel управление файлами
Рабочие листы можно использовать для составления таблиц, обработки статистических данных, управления базой данных и составления диаграмм....
Объекты microsoft excel объекты Microsoft Excel iconЛабораторная работа №6 Логические функции в ms excel. Запустите программу «Microsoft Excel»
Премия сотрудника вычисляется в зависимости от набранной суммы баллов по такому правилу
Объекты microsoft excel объекты Microsoft Excel iconТема Табличний процесор Microsoft Excel
Однако для достижения большей производительности и большего уровня комфорта в Excel предусмотрена возможность настройки меню в соответствии...
Объекты microsoft excel объекты Microsoft Excel iconПрограма олімпіади з предмету „Інформатика Тема Основи роботи в пакеті Microsoft Office Вирішення рівнянь в ms excel. Використання функцій в ms excel. Створення мультимедійних презентацій в ms powerPoint
Вирішення рівнянь в ms excel. Використання функцій в ms excel. Створення мультимедійних презентацій в ms powerPoint
Объекты microsoft excel объекты Microsoft Excel iconЛабораторна робота №10: " Автоматизація розрахунків та аналізу даних за допомогою Microsoft Excel"
Мета роботи: Навчитися налагоджувати та використовувати ms excel при розв’язанні задач та розробляти системи для обробки даних на...
Объекты microsoft excel объекты Microsoft Excel iconЛабораторна робота №10: " Автоматизація розрахунків та аналізу даних за допомогою Microsoft Excel"
Мета роботи: Навчитися налагоджувати та використовувати ms excel при розв’язанні задач та розробляти системи для обробки даних на...
Объекты microsoft excel объекты Microsoft Excel iconЛабораторная работа №9 Работа с данными в ms excel. Запустите программу «Microsoft Excel»
Откройте книгу "Заказы" из папки LabExcel. Если этой книги нет, скопируйте ее из папки Teach диска M
Объекты microsoft excel объекты Microsoft Excel iconЛабораторная работа №5 Логические функции в ms excel. Запустите программу «Microsoft Excel»
Создайте новый лист (меню Вставка/Лист) и назовите его «Расчеты». На этом листе размещайте, начиная с ячейки В2, ответы, требуемые...
Додайте кнопку на своєму сайті:
Документи


База даних захищена авторським правом ©zavantag.com 2000-2013
При копіюванні матеріалу обов'язкове зазначення активного посилання відкритою для індексації.
звернутися до адміністрації
Документи