Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Dim FName As String 'имя файла-копии



With ActiveWorkbook

' Сформировать новое имя файла из исходного

FName - Left(.Name, InStr(.Name, "." ) - 1) & " _bp2.xls"

FName =.Path & " \" & FName

.SaveCopyAs Filename: =FName

End With

End Sub

Сравните этот же код без использования структуры With...End With

Dim FName As String ' имя файла-копии

' Сформировать новое имя файла из исходного

FName = Left(ActiveWorkbook.Name, InStr(ActiveWorkbook.Name, "." ) - 1) _

& " _bp.xls"

FName = ActiveWorkbook.Path & " \" & FName 22

ActiveWorkbook.SaveCopyAs Filename: =FName

End Sub

Работа с коллекциями объектов и контейнерами объектов

Коллекция (collection) объектов — это группа связанных объектов, таких как все рабочие листы в рабочей книге или все символы в параграфе. Объект в коллек­ции называется элементом (element) этой коллекции.

Сама коллекция является объектом; коллекции имеют собственные свойства и методы. Каждая коллекция, например, имеет свойство Count, которое возвраща­ет число элементов в коллекции. Если в активной рабочей книге имеется 16 рабо­чих листов, то следующее выражение вычисляется до числа 16:

Application.ActiveWorkbook.Worksheets.Count

В этом выражении Worksheets— коллекция всех рабочих листов в рабочей книге, ActiveWorkbook— свойство Excel-объекта Application, возвращающее ак­тивную рабочую книгу, a Count— свойство коллекции Worksheets, возвращаю­щее общее число рабочих листов в коллекции.

Это простое выражение помогает проиллюстрировать то, что одни объекты содер­жат другие объекты.. Контейнер (container) — это любой объект, содержащий один или несколько других объектов. В данном примере Applicationсодержит объект, на который ссылается ActiveWorkbook, содержащий в свою очередь, коллекцию объек­тов Worksheets. Все контейнерные объектные ссылки соединяются вместе с помо­щью точки-разделителя (.) для образования одного объектного выражения.

Объект Application включает в себя коллекцию (семейство) объектов Книга (Workbook). Семейство книг называется Workbooks (в конец добавляется буква “s” в английском языке это обозначает множественное число). Обратиться с конкретной книге в приложении можно указав название семейства – Workbooks и в скобках имя или номер книги. Например, Workbooks(“Книга.xls”) или Workbooks(1). Объект Workbook является частью семейства Workbooks, хотя семейство Workbooks тоже является объектом. Кроме того, существует еще объект ActiveWorkbook – активная книга, который тоже является свойством объекта Application. Объекты и ActiveWorkbook являются одиночными объектами. Объект Workbooks - семейство.

Объект Workbook содержит набор свойств объектов, которые будут перечислены ниже:

· объект семейство (коллекция) Worksheets – это рабочие листы конкретной рабочей книги.

· объект семейство Sheets – это рабочие листы в активной рабочей книге.

· объект семейство Windows – это все окна в конкретной рабочей книге.

· объект ActiveSheet - это активный рабочий лист в активной рабочей книге.

Объект Worksheet является рабочим листом - элементом семейства Worksheets, но чтобы обратиться к конкретному листу из семейства надо указать имя или номер рабочего листа в коллекции. Например Worksheets(”Лист1”) или Worksheets(2).

Задание 1

Написать макрос, который открывает книгу “Сотрудники”, создает новую книгу “Копия” и копирует из книги “Сотрудники” лист “Штат” после первого листа книги “Копия”.

Предполагается, что книга “Сотрудники” находится в той же папке, что и файл с книгой, содержащей макрос.

Задание 2

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

Обработчики событий

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

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

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

Обработать можно события следующих обьектов Excel:

  • Application
  • WorkBook
  • WorkSheet
  • Chart

Обработчики событий дают возможность привязать свой код к действиям пользователя, например к открытию или закрытию книги, активации таблицы, сохранению документа... Обработчики событий создаются с модулях лисов или книги (в зависимости от того, с каким объектом будет связано это событие. Чтобы создать процедуру обработки события, откройте редактор Visual Basic (Alt + F11), выберите например Лист1 и из двух раскрывающихся списков сверху выберите объект и событие. Редактор автоматически создаст процедуру для обработки события. Вам остается только написать в ней свой код (см. рисунок).

Однако в некоторых ситуациях события для объектов не появляются в окне редактора кода (например, это справедливо для очень важного объекта Application). В этом случае необходимо явно объявить этот объект с событиями — при помощи ключевого слова WithEvents, например так:

Public WithEvents App As Word.Application

Делается это в области объявлений модуля (Declarations). После этого в редакторе кода Visual Basic появляется новый объект App со всеми необходимыми событиями.

 

Многие события имеют параметры. Это выглядит вот так:

Private Sub Worksheet_BeforeRightClick(ByVal Target As Excel.Range, Cancel As Boolean)
......
End Sub

Здесь Target - диапазон ячеек, подвергшийся процедуре правого клика, Cancel - параметр, позволяющий отменить событие, если установить его в True.

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

Событие Описание
NewWorkbook При создании новой рабочей книги
WorkbookActivate При активизации рабочей книги
WorkbookBeforeClose Перед закрытием рабочей книги
WorkbookBeforeSave Перед сохранением рабочей книги
WorkbookDeactivate Когда активная книга теряет фокус
WorkbookNewSheet При добавлении нового листа в рабочую книгу
WorkbookOpen При открытии рабочей книги

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

Событие Описание
BeforeClose При закрытии рабочей книги
BeforeSave Перед сохранением рабочей книги
Deactivate Когда рабочая книга теряет фокус
NewSheet При добавлении нового листа
Open При открытии рабочей книги
SheetActivate При активизации любого рабочего листа
SheetDeactivate Когда рабочий лист теряет фокус

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

Событие Описание
BeforeClose При закрытии рабочей книги
BeforePrint Перед печатью рабочей книги
BeforeSave Перед сохранением рабочей книги
Deactivate Когда рабочая книга теряет фокус
NewSheet При добавлении нового листа
Open При открытии рабочей книги
SheetActivate При активизации любого рабочего листа
Sheet Deactivate Когда рабочий лист теряет фокус

 

Задание 3

При открытии книги открывать файл Макросы.xls.

 

Задание 4

При активации “Лист4” и “Лист5” сделать видимым “Лист5”. При активации других листов “Лист5” становится невидимым.

Для этой задачи надо выбрать событие активации листа но для книги, а не для Листа 4 и Листа 5, чтобы можно было анализировать состояние одних листов и управлять свойствами других листов.

 

Задание 5

При активации “Листа 3” запрашивать пароль. Если пароль правильный, строки отображаются и с листа снимается защита. Если пароль не совпадает со значением в ячейке AH1 этого листа, оставить скрытыми все строки и защищенным лист.

Проверить корректность работы программы и исправить ошибки.

После работы с листом надо привести Лист 3 в первоначальное состояние, т.е. скрыть строки и защитить лист. Для этого надо использовать событие деактивации листа.

Задание 6

Если на листе поместить курсор в ячейку H6 Лист очищается.

 

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

Вариант № 1

1. Создать книгу под именем Данные.xls. В этой книге создать таблицу с 2 столбцами – ФИО, Должность и 4 строками. Написать макрос, который открывает эту книгу и после последней строки дописывает Вашу фамилию.

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

 

 

Вариант № 2

1. Написать макрос, который создает новую книгу. Запрашивает имя этой книги и дает такое же имя первому листу этой книги.

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

 

 

Вариант № 3

1. Написать макрос, который создает новую книгу под именем Итоги.xls и изменяте названия ее листов на 1, 2 и 3.

2. Создать обработчик, в котором при изменении данный в ячейке F3 этот лист перемещается в конец.

 

 

Вариант № 4

1. Создать книгу под именем Пример.xls. В этой книге создать таблицу с 2 столбцами – Должность и Оклад, заполнить в этой таблице 3 строки. Написать макрос, который открывает эту книгу и копирует лист с этой таблицей в книгу, содержащую данный макрос.

2. Создать обработчик, в котором при изменении данных в последней заполненной ячейке столбца B эта ячейка окрашивается черным цветом. После выхода из этой ячейки возвращается в прежнее состояние.

 

Вариант № 5

1. Написать макрос, который создает новую книгу. Запрашивает имя этой книги, а затем добавляет в конец этой книги еще 3 листа.

2. Создать обработчик, в котором при перемещении на лист 4 создается новый лист и в ячейке A1 нового листа появляется слово «Привет».

 

Вариант № 6

1. Написать макрос, который создает новую книгу под именем Листы.xls и удаляет 1 и 3 листы этой книги и добавляет в начало новый лист.

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

 

Вариант № 7

1. Создать книгу под именем Проба.xls. В этой книге создать таблицу с 2 столбцами – Должность и Оклад, заполнить в этой таблице 3 строки. Написать макрос, который открывает эту книгу и копирует лист с этой таблицей в новую книгу.

2. Создать обработчик, в котором при создании нового листа этот лист получает в названии индекс этого листа.

 

Вариант № 8

1. Создать книгу под именем Данные.xls. В этой книге создать таблицу с 2 столбцами – ФИО, Должность и 4 строками. Написать макрос, который открывает эту книгу и после последней строки дописывает Вашу фамилию.

2. Создать обработчик, в котором при открытии книги первый и второй лист скрываются, а при активизации Листа 3 они снова отображаются.

 

Вариант № 9

1. Написать макрос, который создает новую книгу. Запрашивает имя этой книги и дает такое же имя первому листу этой книги.

2. Создать обработчик, в котором на Листе 3при изменении данных ячейке A1 весь лист становится черным, при уходе с Листа 3 все возвращается в первоначальное состояние.

 

Вариант № 10

1. Написать макрос, который создает новую книгу под именем Итоги.xls и изменяет названия ее листов на 1, 2 и 3.

2. Создать обработчик, для Листа 2в котором при перемещении в любую ячейку столбца D этот столбец скрывается. При уходе с листа столбец открывается

 

Вариант № 11

1. Создать книгу под именем Пример.xls. В этой книге создать таблицу с 2 столбцами – Должность и Оклад, заполнить в этой таблице 3 строки. Написать макрос, который открывает эту книгу и копирует лист с этой таблицей в книгу, содержащую данный макрос.

2. Создать обработчик, в котором при активации листа ширина столбцов с A до H становится равным 1 символ. При уходе с листа ширина этих столбцов становится равной 8 символов.

 

Вариант № 12

1. Написать макрос, который создает новую книгу. Запрашивает имя этой книги, а затем добавляет в конец этой книги еще 3 листа.

2. Создать обработчик, в котором при изменении данных в 10 ряду. Шрифт во всем ряду становится белого цвета. При ухода курсора из этого ряда шрифт становится черным.

 

ПРИЛОЖЕНИЕ

ОБЪЕКТ APPLICATION

Объект Application - это главный (корневой) объект в иерархии объектов Excel, представляющий само приложение Excel. Он имеет огромное число свойств и методов, позволяющих установить общие параметры приложения Excel. Кроме того, объект Application через свойство WorksheetFunction предоставляет возможность использовать в коде все встроенные функции рабочего листа. Это семейство возвращает WorksheetFunction объект, являющийся контейнером всех функций рабочего листа. Например, в следующем примере находится максимальное знчение из диапазона А1: А4:

Макс=Application.WorksheetFunction. Max(Range(" А1: А4" ))

Функции рабочего листа можно включать в код непосредственно через объект Application, опуская свойство WorksheetFunction. Например, в следующем примере переменной Pi присваивается значение Пи, а переменной Сумма присваивается значение суммы из диапазона А1: А4:

Pi = Application.Pi()

Сумма = Application.Sum(Range(" A1: А4" ))


Поделиться:



Последнее изменение этой страницы: 2016-08-31; Просмотров: 1296; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.045 с.)
Главная | Случайная страница | Обратная связь