История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...
Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
Топ:
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Генеалогическое древо Султанов Османской империи: Османские правители, вначале, будучи еще бейлербеями Анатолии, женились на дочерях византийских императоров...
Когда производится ограждение поезда, остановившегося на перегоне: Во всех случаях немедленно должно быть ограждено место препятствия для движения поездов на смежном пути двухпутного...
Интересное:
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Аура как энергетическое поле: многослойную ауру человека можно представить себе подобным...
Дисциплины:
2020-04-01 | 151 |
5.00
из
|
Заказать работу |
|
|
Одним из способов создания кода модуля VBA является запись последовательности действий с помощью специальной функции записи макросов Excel.
В следующем примере показано, как записать макрос, изменяющий ориентацию страницы на альбомную. Если вы хотите получить его самостоятельно, то начните работу с пустой рабочей книги и выполните следующие действия.
1. Активизируйте рабочий лист в книге (подойдет любой лист).
2. Выберите команду Сервис – Макрос - Начать запись.
При этом Excel отображает диалоговое окно Запись макроса.
3. Щелкните на кнопке ОК. чтобы принять параметры по умолчанию.
Excel автоматически вставляет новый модуль VBA в проект. Начиная с этого момента Excel, преобразовывает ваши действия в код VBA. При записи в строке состояния отображается слово Запись, кроме того, в окно добавляется небольшая плавающая панель инструментов, содержащая две кнопки (Остановить запись и Относительная ссылка).
4. Выполните команду Файл - Параметры страницы.
Excel отображает диалоговое окно Параметры страницы.
Выберите переключатель Альбомная и щелкните на кнопке ОК, чтобы закрыть диалоговое окно.
Щелкните на кнопке Остановить запись на панели инструментов (или выберите Сервис—Макрос - Остановить запись).
Excel прекращает записывать ваши действия.
Чтобы просмотреть макрос, запустите VBE (проще всего нажать <Alt+F11>) и найдите проект в окне Project Explorer. Щелкните на узле Modules, чтобы развернуть его. Затем щелкните на элементе Module 1. чтобы отобразить окно кода (если в проекте уже присутствовал модуль Module1, новый макрос будет находиться в модуле Module2). Код, созданный одной командой, представлен в листинге 1. Если вы используете не Excel 2002, а иную версию, текст программы может немного отличаться.
|
Листинг 1. Макрос изменения ориентации страницы на альбомную
Sub Макрос1()
‘ Макрос1 Макрос
1 Макрос записан 19.08.2003
With ActiveSheet.PageSetup
.PrintTitleRows = ""
.PrintTitleColumns = ""
End With
ActiveSheet.PageSetup.PrintArea = "" With ActiveSheet.PageSetup.LeftHeader = "".CenterHeader = "".RightHeader = "n.LeftFooter = "".CenterFooter = ".RightFooter = ""
.LeftMargin = Application JInchesToPoints (0. 787401575).RightMargin = Application.InchesToPoints(0.787401575).TopMargin = Application.InchesToPoints(0.984251969).ButtonMargin = Application.InchesToPoints(0.984251969). HeaderMargin = Application. InchesToPoints (0.5).FooterMargin = Applicatior.InchesToPoints (0.5).PrintHeadings = False.PrintGridlines = False.PrintComments = xlPrintNoComments •PrintQuality = 1200 •CenterHorizontally = False. Center-Vertically = False.Orientation - xlLandscape.Draft = False.PaperSize • xlPaperA4. FirstPageNumber - xlAutoma tic.Order = xlDownThenOver.BlackAndWhite = False
Zoom = 100
.PrintErrors = xlPrintErrorsDisplayed
End With
End Sub
Возможно, вас удивит количество кода, генерированного всего лишь одной командой (особенно если вы записываете макрос впервые). Несмотря на то, что вы изменили только одну простую настройку в диалоговом окне Параметры страницы. Excel генерирует код. задающий все параметры в этом диалоговом окне.
Таким образом, зачастую программа, полученная при записи макроса, избыточна. Если вы хотите, чтобы макрос всего лишь изменял ориентацию страницы на альбомную, то можно значительно упростить макрос, удалив ненужный код. Это облегчит восприятие макроса и ускорит его выполнение, поскольку избавит его от лишних операций. Упростить макрос вы вправе до следующего вида:
Sub Makrocl
With ActiveSheet.PageSetup
.Orientation = xl Landscape
End With End Sub
Мы удалили весь код, кроме строки, изменяющей свойство Orientation. На самом деле данный макрос можно упростить еще больше, так как конструкция With-End не обязательна при изменении только одного свойства.
Sub Makrocl
ActiveSheet.PageSetup.Orientation = xlLandscape
End Sub
В данном примере макрос изменяет свойство Orienation объекта PageSetup активного листа. Отметим, что xlLandscape - это встроенная константа, которая имеет значение 2. Поэтому следующий макрос работает как и предыдущий Makrocl:
Sub Makroc 1
ActiveSheet.PageSetup.Orientation = 2
|
End Sub
Подобная процедура вводится непосредственно в модуль VBA. но для этого необходимо знать какие объекты, свойства и методы требуется использовать. Очевидно быстрее записать макрос. Кроме того, данный пример продемонстрировал наличие у объекта PageSetup свойство Orientation.
Об объектах и коллекциях
Работая с кодом VBA в Excel, необходимо четко понимать назначение объектов и объектной модели Excel. Целесообразнее рассматривать объекты с точки зрения иерархической структуры.
Иерархия объектов
На вершине объектной модели находятся объект Application — в данном случае Excel. Но если вы программируете в VBA, запуская VBE в Microsoft Word, то объектом Application будет выступать Word.
Объект Application (то есть Excel) содержит другие объекты. Ниже приведено несколько примеров объектов, которые находятся в объекте Application:
Workbooks (коллекция всех объектов Workbook — рабочих книг);
Windows (коллекция всех объектов window — окон);
Addlns (коллекция всех объектов Addln — надстроек).
Некоторые объекты могут содержать другие объекты. Например, коллекция Workbooks состоит из всех открытых объектов Workbook, а объект Workbook включает другие объекты, некоторые из которых представлены ниже:
Worksheets (коллекция объектов Worksheet — рабочих листов);
Charts (коллекция объектов Chart — диаграмм);
Names (коллекция объектов Name — имен).
Каждый из этих объектов, в свою очередь, может содержать другие объекты. Коллекция
Worksheets состоит из всех объектов Worksheet рабочей книги Workbook. Объект
Worksheet включает другие объекты, среди которых следующие:
ChartObjects (коллекция объектов ChartQbject — элементов диаграмм);
Range — диапазон;
PageSetup — параметры страницы;
PivotTables (коллекция объектов PivotTable — сводных таблиц).
О коллекциях
Одной из ключевых концепций в программировании на языке VBA являются коллекции.
Коллекция — это группа объектов одного класса (и сама коллекция тоже является объектом).
Как указывалось выше. Workbooks — это коллекция всех открытых в данный момент объектов Workbook. Worksheets — коллекция всех объектов Worksheet, которые содержится в конкретном объекте Workbook. Вы можете одновременно управлять целой коллекцией объектов или отдельным объектом этой коллекции. Чтобы сослаться на один объект из коллекции, введите название или номер объекта в скобках после названия коллекции:
Worksheets("Лист1")
Если лист Лист1 — это первый рабочий лист в коллекции, то можно использовать следующую ссылку.
|
Worksheets(1)
На второй лист в рабочей книге Workbook ссылаются как на Worksheets(2) и т.д.
Кроме того, существует коллекция с названием Sheets, состоящая из всех листов рабочей книги, рабочих листов и листов диаграмм. Если Лист1 — первый лист в книге, то на него можно сослаться так:
Sheets(1)
Ссылки на объекты
Если вы ссылаетесь на объект в VBA, для обращения к нему вводятся названия всех расположенных выше в иерархической структуре объектов, разделенных точкой. Что делать, если в Excel открыты две рабочих книги, и в обеих имеется рабочий лист с названием Лист1?В этом случае в ссылке упоминается контейнер требуемого объекта:
Workbooks("Книга1").Worksheets("Лист1")
Без указания рабочей книги редактор Visual Basic искал бы лист Л и с т1 в активной рабочей книге,чтобы сослаться на определенный диапазон (например, ячейку А1) на рабочем листе с названием Лист1 в рабочей книге Книга1, можно использовать следующее выражение:
Workbooks(" Книга 1"). Worksheets("Лист1").Range("Al")
Полная ссылка из предыдущего примера включает объект A p p l i c a t i o n и выглядит таким образом:
Application. Workbooks (" К н и г а1 "). Worksheets (" Л и с т1 "). R a n g e (" A l ")
Однако в большинстве случаев можно опускать объект A p p l i c a t i o n в ссылках {кроме него использоваться больше нечему). Если объект Книга1 — это активная рабочая книга, то опустите ссылку на нее и запишите рассматриваемое выражение следующим образом:
Worksheets("Лист1").Range("Al")
Если Лист1 является активным рабочим листом, можно еще более упростить выражение:
Range("A1")
В Excel отсутствует объект отдельной ячейки. Отдельная ячейка представляет собой объект Range, состоящий из одного элемента.
Простые ссылки на объекты (как в приведенных примерах) ничего не выполняют. Чтобы выполнить действие, прочтите или измените свойства объекта или задайте метод, который выполняется по отношению к объекту.
Свойства и методы
Запутаться в свойствах и методах несложно: их существует несколько тысяч. В этом разделе показано, как осуществляется доступ к свойствам и методам объектов.
Свойства объектов
|
Всеобъекты обладают свойствами. Например, объект Range обладает свойством с названием Value. Вы можете создать оператор VBA, чтобы отобразить свойство Value или задать свойству Value определенное значение. Ниже приведена процедура, использующая
функцию VBA MsgBox для отображения окна, в котором представлено значение ячейки Al листа Лист1 активной рабочей книги.
Sub ShowValueO
MsgBox Worksheets("Лист1").Range("Al").Value
End Sub
Код предыдущего примера отображает текущее значение свойства Value для конкретной ячейки — А1 рабочего листа Лист1 активной рабочей книги. Обратите внимание, что если в активной книге отсутствует лист с названием Лист1, то макрос выдаст ошибку.
Что необходимо сделать, чтобы изменить свойство Value? Ниже приведена процедура по изменению значения ячейки А1 путем определения значения свойства Value.
Sub ChangeValue()
Worksheets("Лист1).Range("Al").Value = 123
End Sub
После выполнения этой процедуры ячейка А1 листа Лист1 получает значение 123. Вы можете ввести описанные процедуры в модуль и протестировать их.
Многие объекты имеют свойство по умолчанию. Для объекта Range свойством по умолчанию является Value. Следовательно, выражение value в приведенном выше коде можно опустить, и ничего не изменится. Однако лучше включать ссылку на свойство, даже если оно используется по умолчанию.
Методы объектов
Кроме свойств, объекты характеризуются методами. Метод — это действие, которое выполняется над объектом. Ниже приведен простой пример использования метода Clear по отношению к диапазону ячеек. После выполнения этой процедуры ячейки А1: СЗ листа
Лист1 станут пустыми, и дополнительное форматирование ячеек будет удалено.
Sub ZapRange()
W o r k s h e e t s (" Л и с т 1 "). R a n g e (" A l: C 3 "). C l e a r
End Sub
Если необходимо удалить значения в диапазоне, но оставить форматирование, используйте метод C l e a r C o n t e n t s объекта Range.
Многие методы получают аргументы, определяющие выполняемые над объектом действия более детально. Далее приводится пример, в котором ячейка А1 копируется в ячейку В1 с помощью метода Сору объекта Range. В данном примере метод Сору получает один аргумент (адрес ячейки, в которую следует скопировать данные). Обратите внимание что в примере используется символ продолжения строки (пробел и подчеркивание ). Вы можете не применять этого символа, а ввести оператор в одну строку.
Sub CopyOne()
Worksheets("Лист1").Range("Al").Copy _
Worksheets("Лист1").Range("Bl")
End Sub
Определение аргументов методов и свойств
В среде программистов VBA определение аргументов методов и свойств часто вызывает определенные трудности. Некоторые методы используют аргументы для дальнейшего уточнения действия; отдельные свойства используют аргументы для дальнейшего определения значения свойства. Иногда один или несколько аргументов вообще применять не обязательно.
|
Если метод использует аргументы, они указываются после названия метода и разделяются запятыми. Если метод использует необязательные аргументы, то можете пропустить их, оставив пустые места. Рассмотрим метод Protect объекта рабочей книги. В справочной системе дается информация о том, что метод Protect имеет три аргумента: пароль, структура, окна.
Эти аргументы соответствуют параметрам в диалоговом окне Защита книги.
К примеру, если требуется защитить рабочую книгу под названием MyBook.xls, используйте такой оператор:
Workbooks("MyBook.xls").Protect "xyzzy", True, False
В данном случае рабочая книга защищена паролем (аргумент 1). Также защищена структура рабочей книги {аргумент 2), но не ее окна (аргумент 3).
Если вы не хотите присваивать пароль, можно применить такой оператор:
Workbooks("MyBook.xls").Protect, True, False
Обратите внимание, что первый аргумент пропущен, а его место обозначено с помощью запятой.
Существует и другой подход (причем в этом случае программу удобнее будет читать) — использование именованных аргументов. Применим именованные аргументы для предыдущего примера.
Workbooks("MyBook.xls").Protect Structure:=True, Windows:=False
Использование именованных аргументов — хорошая идея, особенно в методах с большим количеством необязательных аргументов, когда следует использовать только некоторые из них. При использовании именованных аргументов не требуется оставлять место для пропущенных аргументов.
Для свойств, использующих аргументы, аргументы указываются в скобках. Например, свойство Address объекта Range имеет пять аргументов— все необязательные. Показанный ниже оператор некорректен, так как пропущены скобки:
MsgBox Range("Al").Address False ' некорректно
Правильный синтаксисдля этого оператора выглядит так:
MsgBox Range("Al").Address(False)
Кроме того, оператор может записываться с использованием именованного аргумента
MsgBox Range("Al").Address(rowAbsolute:=False).
Объект Comment: пример использования
Чтобы лучше разобраться со свойствами и методами объекта, сосредоточимся на изучении конкретного объекта— Comment. Объект Comment создается с помощью команды Excel Вставка^Примечание и предназначается для вставки комментария в ячейки.
Справочные сведения по объекту Comment можно найти в информации о конкретном объекте в электронной справочной системе.
|
|
Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!