Лекция 5 Microsoft Excel Открытие и закрытие рабочей книги


Скачать 131.69 Kb.
НазваниеЛекция 5 Microsoft Excel Открытие и закрытие рабочей книги
Дата публикации19.12.2013
Размер131.69 Kb.
ТипЛекция
referatdb.ru > Право > Лекция

Лекция 5

Microsoft Excel

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


Sub OpenChangeClose()



fName = Application.GetOpenFilename

Loop Until fName <> False

Set myBook = WorkBooks.Open(Filename:=fName)

myBook.Close savechanges:=False

Set newBook = Workbooks.Add

Do

fName = Application.GetSaveAsFilename

Loop Until fName <> False

newBook.SaveAs Filename :=fName

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


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

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

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

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

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

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

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

По-другому


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

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

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

For Each с In Worksheets("Sheet1").Range("A1 :A10").Cells
    c.0ffset(0, 1).Formula = "hell-o"
Next c
^ CurrentRegion и UsedRange

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

For Each...Next и Do...Loop.
Sub GoodRemoveDuplicates()
     Worksheets("Sheet1").Range("A1").Sort _
     key1 :=Worksheets( "Sheet1 ").Range( "А1 ")
     Set currentCell = Worksheets( "Sheet1 ").Range( "А1 ")
     Do While Not lsEmpty(currentCell)
          Set nextCell = currentCell.0ffset(1, 0)
          If nextCell.Value = currentCell.Value Then
               currentCell.EntireRow.Delete
          End If
          Set currentCell = nextCell
     Loop
End Sub
У объекта^ Range есть свойство Address – адрес ячеек диапазона в виде строки.
Включение и отключение обработки событий

Для включения или отключения обработки событий предназначено свойство 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, объявленный в модуле класса, чтобы создать процедуру обработки событий как для внедренных диаграмм, так и для листов диаграмм.





Похожие рефераты:

2. к устройствам ввода информации относятся
Калькулятор, Блокнот, Word Pad, Microsoft Word, Microsoft Excel, Microsoft PowerPoint
I. открытие, ведение и закрытие банковских счетов в национальной и иностранной валюте
Открытие, ведение и закрытие сберегательного и текущего счета в национальной и иностранной валюте
Курсы AutoCad,Lira Опыт работы
Интернет, Email, Microsoft Word, Microsoft Excel, Power Point, Paint, Adobe bridge cs6 и т п
Рабочая программа по дисциплине «Современные офисные технологии»
Цель изучения дисциплины является освоение слушателями теоретических знаний программ современных офисных технологий Internet Explorer,...
В. С. Мастяница Утверждено на совете факультета 21 декабря 2000 г
Хорошо известен среди пользователей, самый популярный пакет офисных приложений фирмы Microsoft, который называется Microsoft Office....
Excel. Укажите какие типы данных не может содержать отдельная ячейка таблицы
Абсолютный адрес в редакторе Microsoft Excel, это есть: Адрес ячейки, содержащей константы
Инструкция по использованию ms excel для решения задач лп для того...
Для того чтобы решить задачу лп в табличном редакторе Microsoft Excel, необходимо выполнить следующие действия
Инструкция по использованию ms excel для решения задач лп для того...
Для того чтобы решить задачу лп в табличном редакторе Microsoft Excel, необходимо выполнить следующие действия
Ф. И. О.: Зубрина Юлия Сергеевна Дата рождения
Опыт работы: 4 года. Являюсь токарем второго разряда. Владею навыками работы с Компас3D, Microsoft Office Word, Microsoft Office...
Лабораторная работа №1. Основы языка vba
Написать макрос, который выводил бы на листе рабочей книги Excel таблицу первых n простых чисел. Таблица должна содержать m столбцов....

Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
referatdb.ru
referatdb.ru
Рефераты ДатаБаза