Главная страница

Лаб.практикум по инф-ке_МУ. С. Л. Миньков лабораторный практикум по информатике


Скачать 4.64 Mb.
НазваниеС. Л. Миньков лабораторный практикум по информатике
Дата22.05.2022
Размер4.64 Mb.
Формат файлаpdf
Имя файлаЛаб.практикум по инф-ке_МУ.pdf
ТипПрактикум
#542916
страница6 из 10
1   2   3   4   5   6   7   8   9   10
Раздел 6. Объекты пользовательского интерфейса
Цель раздела: изучить объекты Excel, использующиеся в VBA при разработке интерфейса пользователя, и научиться ра- ботать с оператором With.
В предыдущем разделе были созданы простейшие VBA- приложения, или макросы (процедуры и функции), работающие в Excel.
Но если требуется создать сколько-нибудь продвинутое приложение с содержательной обработкой данных, то необходи- мо понять структуру VBA как технологию визуального програм- мирования.
VBA использует идеи объектно-ориентированного про- граммирования, т. е. методику анализа, проектирования и напи-
сания приложений с помощью объектов.
К основным понятиям VBA относятся объект, метод, свой- ство, событие.
6.1 Объект
Объект — это конструкция, позволяющая инкапсулировать данные вместе с кодом, предназначенным для их обработки, т. е. объединить их в единое целое. Все визуальные объекты
VBA, такие как само приложение Excel (Application), рабочий лист (Worksheet), диапазон (Range), диаграмма (Chart), форма
(UserForm) и др., являются объектами. В VBA имеется более 100 встроенных объектов.
Объекты могут объединяться в семейства. Это тоже объект, но содержащий несколько других объектов, как правило, одного и того же типа. Например, объект Workbooks (рабочие книги) содержит все открытые объекты Workbook (рабочая книга).
Каждый элемент семейства нумеруется и может быть идентифи- цирован либо по номеру, либо по имени. Например, Worksheets
(1) обозначает первый рабочий лист активной книги, a Worksheets ("Лист1") — рабочий лист с именем Лист1.
Полная ссылка на объект состоит из ряда имен вложенных последовательно друг в друга объектов. Разделителями имен

105 объектов в этом ряду являются точки. Ряд начинается с объекта
Application и заканчивается именем самого объекта. Например, полная ссылка на ячейку A1 рабочего листа Лист1 рабочей книги
(файла Excel)с именем Книга1 имеет вид:
Application.Workbooks("Книга1").Worksheets("Лист1").Range("A1")
Приводить каждый раз полную ссылку на объект совершен- но не обязательно. Обычно достаточно ограничиться только не-
явной, или относительной, ссылкой на объект. В неявной ссылке, в отличие от полной, объекты, которые активны в данный мо- мент, как правило, можно опускать. Например, если ссылка на ячейку A1 дана в программе, выполняемой в среде Excel, то ссылка на объект Application может быть опущена, т. е. доста- точно привести относительную ссылку:
Workbooks("Книга1").Worksheets("Лист1").Range("A1")
Если рабочая книга Книга1 является активной, то ссылку можно записать еще короче:
Worksheets("Лист1").Range("A1")
Если рабочий лист Лист1 активен, то в относительной ссыл- ке можно ограничиться упоминанием только диапазона A1:
Range("A1")
Примечание. Характеристика некоторых объектов:
Application — представляет собой среду, в которой выполняется приложение Excel. Любое обращение к свойству или методу этого объекта в программе на языке VBA влияет на все приложение Excel.
Workbooks — семейство объектов, в котором находятся объекты
Workbook. Workbook — это открытая рабочая книга Excel, обращение к которой осуществляется через семейство Workbooks.
Worksheets — семейство объектов, в котором находятся объекты
Worksheet. Worksheet — это открытые рабочие листы Excel. Обращение к листам осуществляется через семейство Worksheets.
Range — содержится в объекте Worksheet и представляет собой диа- пазон (последовательный набор) ячеек рабочего листа.
Borders — семейство объектов, в котором находятся объекты Border.
Border — это объект, который применяется для изменения стиля, цвета и толщины рамок ячейки.
Font — содержится в объекте Range и применяется для изменения формата шрифта ячейки.
Interior — содержится в объекте Range и применяется для изменения цвета и узора ячейки.

106
Style — содержится в объекте Range и представляет собой стиль ячейки. Используется для хранения наборов значений свойств объектов
Font, Interior и Border. Заданные стили рабочей книги доступны через се- мейство Styles.
Windows — семейство объектов, в котором находятся объекты
Window. Объект Application в семействе Windows содержит все окна при- ложения, а объект Workbook — только окна рабочей книги. Объект
Window используется для изменения параметров окон приложения или ра- бочих листов.
Объект Application
Объект Application располагается на самой верхней ступени иерар- хии и представляет само приложение Excel. Объект можно считать средой, в которой выполняются приложения на языке VBA. Объект Application имеет 120 свойств и 40 методов. Основные свойства объекта перечислены ниже, причем свойство только для чтения обозначается буквой R, а для за- писи — W.
Caption — заголовок для главного окна Excel (R/W);
Path — путь к папке, где установлена программа Excel (R/W);
ScreenUpdating — если True, то обновление экрана при выполнении программы разрешено (R/W);
WindowState — состояние главного окна Excel, принимает три зна- чения: xlNormal, xlMaximized, xlMinimized (R/W);
DisplayStatusBar — если True, то строка состояния видна (R/W);
DisplayFormulaBar — если True, то строка формул видна (R/W).
Основные методы объекта Application следующие:
Calculate — перерасчет всех формул на всех листах всех книг;
Quit — закрывает Excel;
Run — выполняет подпрограмму (макрос) на языке VBA.
Объект WorkBook
Объект WorkBook расположен на второй ступени иерархии объектов
Excel и представляет файл рабочей книги. Обычно одиночное приложение располагается только в одной рабочей книге. Любое обращение к методу или свойству объекта WorkBook влияет на все приложение VBA.
Основные свойства объекта следующие:
Name — имя рабочей книги (R);
Path — путь к файлу рабочей книги (R);
Saved — если True, то изменений в книге не было (R/W).
Основные методы объекта Application следующие:
Activate — активизирует рабочую книгу;
Close — закрывает рабочую книгу;

107
Protect — защищает книгу от редактирования;
Save — сохраняет рабочую книгу;
SaveCopyAs — сохраняет рабочую книгу в новом файле.
Объект WorkSheet
Объект Worksheet содержится в объекте Workbook и представляет рабочий лист Excel с табличной структурой.
Основные свойства рабочего листа следующие:
Index — номер листа в рабочей книге (R);
Name — имя рабочего листа (R/W);
Visible — если False, то лист является скрытым (R/W);
Основные методы рабочего листа следующие (все R/W):
Activate — активизирует рабочий лист;
Select — активизирует (выбирает) рабочий лист;
Calculate — пересчитывает все формулы на листе;
Delete — удаляет лист из рабочей книги;
Protect — защищает лист от редактирования;
SetBackgroundPicture — загружает указанный графический файл как фоновый рисунок для рабочего листа.
Объект Window
Свойства объект Window позволяют изменять вид окна рабочего ли- ста или всей книги.
Список основных свойств объекта Window, влияющих на отдельный рабочий лист, следующий (все R/W):
DisplayFormulas — если True, то в ячейках отображаются введенные формулы;
DisplayGridlines — если True, то линии сетки ячеек видны;
DisplayHeadings — если True, то показываются заголовки строк и столбцов вдоль левого и верхнего краев листа;
DisplayZeros — если True, то в пустых ячейках видны нули;
ScrollColumn — устанавливает номер самого левого столбца рабоче- го листа;
ScrollRow — устанавливает номер самой верхней строки рабочего листа.
Список свойств, влияющих на всю рабочую книгу, имеет следующий вид:
Caption — название объекта Window, которое отображается в заго- ловке окна. По умолчанию хранит название рабочей книги;
DisplayHorizontalScrollBar — если True, то отображается горизон- тальная полоса прокрутки;

108
DisplayVerticalScrollBar — если True, то отображается вертикальная полоса прокрутки;
DisplayWorkbookTabs — если True, то вдоль нижнего края окна вид- ны ярлычки рабочих листов;
Height — высота окна книги в пунктах (1/72 дюйма);
Left, Top — координата верхнего левого угла окна относительно ро- дительского окна Excel;
Width — ширина окна книги в пунктах;
WindowState — состояние окна рабочей книги, принимает три значе- ния: xlNormal, xlMaximized, xlMinimized.
Объект Range
Объект Range возвращает группу указанных ячеек (диапазон) рабо- чего листа Excel. Ячейки можно форматировать средствами самого объек- та Range и объектов, входящих в него. Основные свойства объекта Range перечислены ниже:
Column — номер первого столбца диапазона (R);
ColumnWidth — ширина столбца (R/W);
EntireColumn — возвращает все столбцы диапазона (R);
EntireRow — возвращает все строки диапазона (R);
Font — шрифт диапазона (R);
Height — высота диапазона в пунктах (1/72 дюйма) (R);
Hidden — если True, то скрывает столбец или строку (R/W);
HorizontalAlignment — горизонтальное выравнивание содержимого ячеек (R/W);
Interior — объект форматирования фона ячеек (R);
NumberFormat — формат чисел ячеек (R/W);
Orientation — ориентация содержимого ячеек (R/W);
Row — номер первой строки диапазона (R);
RowHeight — высота всех строк в диапазоне (R/W);
ShrinkToFit — если True, то автоматически настраивает размер шрифта текста под размер ячейки (R/W);
Style — объект, содержащий стиль диапазона ячеек (R);
UseStandartHeight — если True, то высота строк диапазона становит- ся равна стандартной высоте строк всего листа (R/W);
UseStandartWidth — если True, то ширина столбцов диапазона стано- вится равна стандартной ширине столбцов всего листа (R/W);
VerticalAlignment — вертикальное выравнивание содержимого ячеек
(R/W);
Width — ширина диапазона в пунктах (R);

109
WrapText — если True, то текст в ячейках разбивается на несколько строк в каждой ячейке, при этом высота ячейки автоматически увеличива- ется.
Основные методы объекта Range следующие:
AutoFormat — позволяет применять к диапазону 16 встроенных таб- личных форматов;
BorderAround — окружает заданный диапазон рамкой;
Borders — семейство рамок диапазона;
Columns — семейство столбцов диапазона;
Justify — равномерно распределяет текст по вертикали (при необхо- димости переносит его в нижние ячейки);
Merge — соединяет ячейки;
UnMerge — разъединяет ячейки;
Rows — семейство строк диапазона.
Объект Font
Для форматирования шрифта содержимого диапазона ячеек исполь- зуется объект Font, который входит в состав объекта Range.
Основные свойства объекта Font следующие (все R/W):
Bold — если True, то шрифт имеет полужирный стиль;
Color — цвет шрифта в системе RGB;
ColorIndex — индекс цвета для шрифта, который принимает значе- ния встроенных цветов Excel в интервале от 0 до 56;
FontStyle — задает шрифт четырьмя значениями: Regular, Bold, Italic и Bold Italic;
Italic — если True, то шрифт имеет наклонный стиль;
Name — название шрифта;
Size — размер шрифта в пунктах;
Strikethrough — если True, то текст перечеркивается линией;
Subscript — если True, то текст имеет вид нижнего индекса;
Superscript — если True, то текст имеет вид верхнего индекса;
Underline — подчеркивает текст линией, принимает пять значений: xlNone, xlSingle, xlDouble, xlSingleAccounting, xlDoubleAccounting.
Объект Interior
Объект Interior задает цвет и фон ячеек рабочего листа и имеет сле- дующие свойства (все R/W):
Color — цвет фона ячеек в системе RGB;
ColorIndex — индекс цвета для фона ячеек, который принимает зна- чения встроенных цветов Excel в интервале от 0 до 56;
Pattern — задает один из 20 встроенных фоновых узоров Excel;
PatternColor — цвет фонового узора;
PatternColorIndex — индекс цвета для фонового узора.

110
Объект Border
Доступен через семейство Borders и применяется для изменения формата границ ячеек. Основные свойства объекта Borders следующие (все
R/W):
Color — цвет рамки ячеек в системе RGB;
ColorIndex — индекс цвета для рамки ячеек;
LineStyle — задает стиль границы из 8 встроенных стилей Excel;
Weight — толщина границы, принимает 4 значения: xlHairline, xlThin, xlMedium, xlThick.
Объект Style
Объект Style содержит именованный стиль ячеек и включает в себя следующие свойства: HorizontalAlignment, Orientation, ShrinkToFit, Style,
UseStandartHeight, UseStandartWidth, VerticalAlignment, Width, WrapText и др., а также объекты: Font, Interior, Name. Свойство Name позволяет при- своить стилю имя и затем в программе использовать заданный стиль по- вторно.
6.2
Метод
Объект содержит список методов, которые к нему применимы.
Методы — это то, что вы можете делать с объектом.
Синтаксис применения метода: Объект.Метод
Например,
Application.Quit — закрыть приложение. Применен метод
Quit (выйти, завершить).
UserForm1. Hide — спрятать (убрать с экрана, но не выгру- жать из памяти) форму. Применен метод Hide (спрятать).
Метод можно применять и ко всем объектам семейства.
Например,
Worksheets("Лист1").ChartObjects.Delete — удалить все диаграммы с рабочего листа Лист1. Применен метод Delete (уда- лить).
6.3 Свойство
Каждый объект обладает некоторыми свойствами.
Свойства определяют его характеристики, такие как размер, цвет, положение на экране и состояние объекта, например до- ступность или видимость.

111
Синтаксис установки значения свойства:
Объект.Свойство = ЗначениеСвойства
Чтобы изменить характеристику объекта, надо просто изме- нить значение его свойства. Например,
Worksheets(2).Range("A1").Font.Name ="Times New Ro-
man" — назначить шрифт Times New Roman для отображения информации в ячейке А1 второго рабочего листа.
Среди свойств особое место занимают свойства, возвраща-
ющие объект. Их синтаксис иной. Наиболее часто употребляе- мые подобные объектные свойства приведены в таблице 6.1.
Таблица 6.1 — Свойства, возвращающие объект
Название свойства
Описание объекта
ActiveWindow
Активное окно Excel
ActiveWorkbook
Активная рабочая книга активного окна Excel
ActiveSheet
Активный лист активной книги
ActiveDialog
Активное диалоговое окно активного листа
ActiveChart
Активная диаграмма активного листа
ActiveCell
Активная ячейка активного листа
Например, Application.ActiveWindow.DisplayGridlines =
False — сделать невидимыми линии сетки ячеек в активном окне
Excel. Работает только на том листе (активном), с которого запу- щен макрос.
Обратите внимание, когда вы набираете этот текст в макро- се, то при нажатии каждой точки выпадает подсказка — список возможных методов и свойств, которые можно применить в дан- ном состоянии (рис. 6.1).
Это помогает правильно и быстро записать программную конструкцию.

112
Рис. 6.1 — «Подсказки» при наборе кода VBA
Примечание. Если курсор расположить на ключевом слове языка VBA, имени процедуры, функции, свойства или метода и нажать клавишу F1, то на экране появится окно со справочной информацией об этой функции. Обычно в справке имеется при- мер использования кода, что позволяет быстрее разобраться в проблемной ситуации.
В окне Obiect Browser (рис. 6.2), которое открывается в Ре- дакторе VBA кнопкой F2 клавиатуры или выбором опции Obiect
Browser в меню View, можно увидеть список доступных объек- тов (поле Classes) и соответствующие выбранному объекту мето- ды и свойства (поле Member of…).
Рис. 6.2 — Окно просмотра объектов

113
6.4 Событие
Событие представляет собой действие, распознаваемое объектом (например, щелчок мышью или нажатие клавиши), для которого можно запрограммировать процедуру отклика. События возникают в результате действий пользователя или программы.
Также они могут быть вызваны системой.
Суть программирования на VBA как раз и заключается в со- здании процедур обработки различных событий. Если пользователь производит какое-то воздействие на систему (нажимает кнопку), тогда в качестве отклика выполняется код созданной пользовате- лем процедуры. Если такой отклик не создан, т. е. не написана со- ответствующая процедура, то система никак не реагирует на дан- ное событие.
В разделах 4 и 5 мы уже создавали процедуры отклика нажатия на кнопку — как с помощью макрорекодера, так и само- стоятельно.
6.5 Оператор With…End With
Оператор With…End With применяется тогда, когда необ- ходимо задать много свойств или выполнить большое количество методов одного объекта. Он позволяет существенно упростить обращение к объекту, заметно сокращает объем кода, делает его понятнее и производительнее.
Рассмотрим две подпрограммы, решающие одну и ту же за- дачу.
'---------------------- Макрос без оператора With ----------------------------
Sub NonUseWith()
Worksheets(2).Select
Worksheets(2).Unprotect
Worksheets(2).Range("A1").Font.Bold = True
Worksheets(2).Range("A1").Font.Italic = True
Worksheets(2).Range("A1").Font.Size = 22
Worksheets(2).Range("A1").Font.Name = _
"Times New Roman"
Worksheets(2).Range("A1").Font.ColorIndex = 3
End Sub

114
'------------------- Макрос с оператором With ----------------------------
Sub UseWith()
With Worksheets(2)
.Select
.Unprotect
With .Range("A1").Font
.Bold = True
.Italic = True
.Size = 22
.Name = "Times New Roman"
.ColorIndex = 3
End With
End With
End Sub
(проверьте, что выполняют эти макросы).
Во втором макросе объем кода значительно меньше, и про- грамма гораздо понятнее. Видно также, что язык VBA допускает применение вложенных операторов With. Понятно, что в случае, когда происходит всего лишь единственное обращение к объекту, нет смысла применять оператор With.
6.6 Создание вспомогательных процедур
Создадим две вспомогательные процедуры без параметров: очистки листа AllClear и восстановления начальных параметров
Reset, которые потребуются в дальнейшем. Для этого в редакторе
VBA добавляем модуль с помощью команды Insert | Module
(см. предыдущий раздел).
1. Процедура очистки листа. Выполним команду Insert |
Procedure. В открывшемся диалоговом окне укажем: имя макро- са «AllClear», тип макроса Подпрограмма (Sub), область опре- деления Общая (Public).
Затем в окне редактирования кода модуля запишем следу- ющий код:
Public Sub AllClear()
'Обращаемся ко всем ячейкам листа (если надо было бы обратиться 'к диапазону ячеек, следовало бы написать: Range("A1:F40"))
With Cells
'Очищаем содержимое ячеек

115
.Clear
'Восстанавливаем стандартную высоту строк
.UseStandardHeight = True
' Восстанавливаем стандартную ширину столбцов
.UseStandardWidth = True
' Восстанавливаем разъединенные строки
.UnMerge
End With
'В цикле очищаем лист от всех объектов
For Each i In ActiveSheet.Shapes
i.Delete
Next i
End Sub
2. Процедура восстановления начальных параметров
листа Excel.
В уже открытом окне редактирования кода модуля запишем следующий код:
Public Sub Reset()
'Выбираем первый рабочий лист
Worksheets(1).Select
With Application
'Показать строку состояния
.DisplayStatusBar = True
'Показать строку формул
.DisplayFormulaBar = True
End With
With ActiveWindow
'Показать заголовки строк и столбцов
.DisplayHeadings = True
'Показать горизонтальную полосу прокрутки
.DisplayHorizontalScrollBar = True
'Показать вертикальную полосу прокрутки
.DisplayVerticalScrollBar = True
'Показать ярлычки рабочих листов
.DisplayWorkbookTabs = True
End With
End Sub

116
Пример 6.1. Создать макрос заливки всех листов рабочей
книги Excel сплошным цветом.
Как и ранее, выполним команду Insert | Procedure. В от- крывшемся диалоговом окне укажем имя макроса
«Цвет_книги», тип макроса Подпрограмма (Sub), область определения Общая (Public). Наберем следующий код:
Public Sub Цвет_книги()
'Цикл изменения номера листа рабочей книги от первого до последнего
For i = 1 To Worksheets.Count
'Выбираем рабочий лист под номером «i»
Worksheets(i).Select
'Обращаемся к ячейкам листа
With Cells
'Закрашиваем ячейки цветом под номером 11
.Interior.ColorIndex = 11
'Выдаем информационное сообщение о номере закрашиваемого листа
MsgBox "Лист № " & i
End With
Next i
End Sub
Затем выйдем из окна редактирования кода и запустим мак- рос. Все листы рабочей книги закрасятся одним цветом.
Запуском макроса AllClear цвет листов возвращается в пер- воначальное состояние.
Параметр ColorIndex может принимать значения от 1 до 56.
Базовым цветам соответствуют номера с 1 по 8:
1 — черный;
2 — белый;
3 — красный;
4 — зеленый;
5 — синий;
6 — желтый;
7 — фиолетовый;
8 — бирюзовый.
Остальные номера соответствуют различным оттенкам ба- зовых цветов.

117
6.7 Функции MsgBox и InputBox
В коде макроса использована функция вывода MsgBox, ко- торая выводит информационное сообщение в диалоговом окне и устанавливает режим ожидания нажатия кнопки пользователем.
Она имеет следующий синтаксис:
MsgBox Сообщение, Кнопки, Заголовок
Аргументы:
Сообщение — обязательный аргумент, задающий в окне выводимое информационное сообщение. Может состоять из не- скольких текстовых строк, переменных, функций, объединенных знаком конкатенации (сцепки) &. Использование в этом аргу- менте функции Chr(13) приводит к переходу на новую строку при выводе информации.
Кнопки — необязательный аргумент; определяет категории появляющихся в окне кнопок. По умолчанию соответствует по- явлению кнопки ОК. В табл. 6.1 приведены возможные значения аргумента.
Заголовок — необязательный аргумент; задает заголовок окна (по умолчанию «Microsoft Excel»).
Например, выполнение оператора
MsgBox "Сегодня у нас: " & Chr(13) & "Дата и время
(функция Now): " _
& Now & Chr(13) & "Дата (функция Date): " & Date &
Chr(13) & _
"Системное время (функция Time): " & Time, vbMs-
gBoxHelpButton, _ "Внимание"
приведет к появлению сообщения:
Рис. 6.3 — Пример сообщения MsgBox

118
Таблица 6.1 — Допустимые значения аргумента Кнопки
Отображение
Аргумент
Кнопка ОК
VbOKOnly
Кнопки ОК и Отмена
VbOKCancel
Кнопки Да и Нет
VbYesNo
Кнопки Да, Нет и Отмена
VbYesNoCancel
Кнопки Да и Справка
VbMsgBoxHelpButton
Кнопки Прекратить, Повторить и Пропу- стить
VbAbortRetryIgnore
Кнопки Повторить и Отмена.
VbRetryCancel
Информационный знак
VbInformation
Знак запрета (косой крест)
VbCritical
Знак вопроса
VbQuestion
Знак восклицания
VbExclamation
При таком синтаксисе функции важно соблюсти порядок следования аргументов, запятыми указывая место аргумента при его отсутствии.
Но при использовании метода именованных аргументов до- пускается произвольный порядок:
MsgBox (Prompt [, Buttons] [, Title] [, HelpFile, Context])
Единственным обязательным аргументом является аргумент
Prompt, который может быть любым строковым выражением и содержит информацию, которая выводится в диалоговом окне.
Все остальные аргументы — необязательные:
Title — строка для заголовка диалогового окна.
HelpFile — строковое выражение, содержащее имя спра- вочного файла Windows (который уже должен быть создан).
Context — численное выражение, указывающее раздел в справочном файле, относящийся к отображаемому диалоговому окну.
Buttons — численное выражение, которое задает количество и тип кнопок в диалоговом окне.
Например, MsgBox Buttons:=VbYesNo, Title := "Заголо-
вок", Prompt := "Сообщение"

119
Обратите внимание, если пропущены круглые скобки, то функция MsgBox получает значение (см. табл. 6.2), которое может быть использовано для обработки события нажатия на ту или иную кнопку.
Каждой кнопке, помещенной в поле информационного со- общения, можно поставить в соответствие макрос, обрабатыва- ющий событие (нажатие на «Да», «Нет» и т. п.).
Таблица 6.2 — Возвращаемые значения-константы функции
MsgBox
Действие
Константа
Числовое значение
Пользователь выбирает кнопку ОК vbOK
1
Пользователь выбирает кнопку Отмена vbCancel
2
Пользователь выбирает кнопку Прервать vbAbort
3
Пользователь выбирает кнопку Повтор vbRetry
4
Пользователь выбирает кнопку Пропустить vbIgnore
5
Пользователь выбирает кнопку Да vbYes
6
Пользователь выбирает кнопку Нет vbNo
7
Функция InputBox используется для ввода значений пере- менных с помощью окна ввода.
Она имеет следующий синтаксис:
Имя_Переменной = InputBox( Сообщение, Заголовок,
Значение по умолчанию)
Ее аргументы:
Сообщение — обязательный аргумент; задает в окне ин- формационное сообщение, обычно поясняющее смысл вводимой величины.
Заголовок — необязательный аргумент; задает заголовок окна;
Значение по умолчанию — необязательный аргумент.
Например, ввести значение переменной N с клавиатуры, предусмотрев значение по умолчанию равное 1024:
N = InputBox("Введите N", "Ввод исходных данных",10)

120
В результате появится окно для ввода значения переменной
N (рис. 6.4).
Рис. 6.4 — Окно функции InputBox
Если значение по умолчанию подходит пользователю, то после щелчка кнопки ОК окно ввода закроется, переменной N присвоится значение 1024 и выполнение программы возобновит- ся с оператора, стоящего непосредственно за вызовом InputBox.
Если же значение по умолчанию не подходит пользователю, то перед щелчком по кнопке ОК необходимо ввести нужное зна- чение переменной N.
Задание 6.1. Закраска листов
1. Открыть новый файл Excel.
2. Написать макрос, добавляющий к имеющимся трем ли- стам еще 5 листов и закрашивающий все 8 листов в различные базовые цвета, выдавая перед каждой окраской информационное сообщение с названием цвета листа.
6.8 Создание кнопок
Выберем лист под номером 1 и изменим его название на «Кнопка». Для этого нужно кликнуть по закладке листа внизу экрана правой клавишей и в появившемся меню выбрать пункт
«Переименовать».

121
В меню Разработчик вызвать опцию Вставить, выбрать Элементы
ActiveX, щелкнуть по элементу Кноп-
ки одновременно рядом с кнопкой
Вставить.
Создадим кнопку, для этого щелкнем на рабочем листе левой кнопкой мыши и потянем указатель так, чтобы рамка кнопки занимала площадь четырех ячеек.
Вызвав контекстно-зависимое меню, откроем окно свойств (опция
Свойства) для кнопки
CommandButton1. Изменим свойства
Name и Caption, присвоив значение
Кнопка1 (рис. 6.5).
Выберем в контекстно-зависи- мом меню опцию Исходный текст.
Появится окно модуля рабочего листа и одновременно сгенерируется тело процедуры отклика для события Click
(щелчок левой кнопкой мыши).
Внесем в тело процедуры код, вы- водящий на экран соответствующее информационное сообщение:
Private Sub Кнопка1_Click()
'Выводим на экран подтверждающее сообщение
MsgBox "Щелчок левой кнопкой мыши"
End Sub
Аналогично создадим элемент управления Кнопка2.
Поместим на Кнопку2 рисунок, для этого выберем свойство
Picture (рис. 6.5). Щелчок по полю справа вызывает появление кнопки с тремя точками, нажатие на которую, в свою очередь, вызывает появление окна загрузки рисунка. Следует подбирать небольшие рисунки, например, «иконки» (файлы с расширением
.ico).
Свойству PicturePosition (размещение рисунка на кнопке) присвоим значение 1-fmPicturePositionLeftCenter (слева по цен- тру). На кнопке появится рисунок и надпись (рис. 6.6).
Рис. 6.5 — Окно свойств кнопки

122
Рис. 6.6 — Кнопка с рисунком
Для этой (второй) кнопки запрограммируем отклик на собы- тие DblClick (двойной щелчок). Для этого перейдем в окно редакти- рования кода (Исходный текст). В левом верхнем списке окна выбе- рем объект Кнопка2, а в правом списке — событие DblClick
(рис. 6.7).
Рис. 6.7 — Левое и правое поле заголовка окна кода кнопок
Заголовок процедуры приобретет вид:
Private
Sub
Кнопка2_DblClick(ByVal
Cancel
As
MSForms.ReturnBoolean)
Запишем в тело процедуры код:
'Выводим на экран подтверждающее сообщение
MsgBox "Двойной щелчок"
Закрыв Режим конструктора, проверим работу кнопок.
6.9 Форматирование листов
Пример 6.1. Написать НастроитьРазмерЯчеек, который
в цикле изменяет одновременно ширину и высоту столбца В и
строки 5 от нуля до размера 40 пикселей с шагом 5 пикселей.
Выдать информационное сообщение о каждом изменении.

123
Откроем новый файл и создадим макрос с помощью коман- ды Insert | Procedure. В открывшемся диалоговом окне укажем тип макроса Подпрограмма (Sub) и область определения Общая
(Public).
Затем в окне редактирования кода модуля запишем следу- ющий код:
Public Sub НастроитьРазмерЯчеек()
'Объявляем переменную «Размер_Ячейки» целого типа для исполь- зования ее как счетчика оператора цикла
Dim Размер_Ячейки As Integer
'Выбираем первый рабочий лист
Worksheets(1).Select
'Выделяем ячейку B5
Range("B5").Select
With Selection
'Запускаем цикл изменения свойств
For Размер_Ячейки = 0 To 40 Step 5
'Задаем ширину столбца
.ColumnWidth = Размер_Ячейки
'Задаем высоту строки
.RowHeight = Размер_Ячейки
'Выводим на экран сообщение о ширине и высоте ячейки
MsgBox "Ширина и высота ячейки B5 = " & Размер_Ячейки
Next
End With
'Выводим на экран сообщение о завершении работы
MsgBox "Действие закончено"
'Вызываем процедуру очистки листа и восстановления начальных значений ячейки
AllClear
End Sub
Пример 6.2. Написать два макроса СкрытьЯчейки и Вос-
становитьЯчейки, которые позволяют прятать и показывать
соответственно нужный столбец для заданной ячейки В1.
Аналогично первому заданию создадим макрос Скрыть-
Ячейки.
Public Sub СкрытьЯчейки()
'Выбираем первый рабочий лист
Worksheets(1).Select

124
'Вызываем процедуру очистки листа
AllClear
'Обращаемся к столбцу B
Range("B:B").Activate
'Обращаемся к ячейке B1
With Range("В1")
'Вводим в ячейку B1 значение «Текст»
.Value = "Текст"
'Копируем значение в диапазон ячеек «B1:B10»
.AutoFill Range ("B1:B10")
'Выводим на экран подтверждающее сообщение
MsgBox "Данные введены в первые 10 ячеек столбца B"
'Скрываем столбец
.EntireColumn.Hidden = True
'Выводим на экран подтверждающее сообщение
MsgBox "Столбец скрыт"
End With
'Выводим на экран подтверждающее сообщение
MsgBox "Действие закончено"
End Sub
Теперь создадим макрос ВосстановитьЯчейки.
Public Sub ВосстановитьЯчейки()
'Выбираем первый рабочий лист
Worksheets(1).Select
'Обращаемся к ячейке B1 столбца B
With Range("В1")
'Проверяем, показан ли столбец, в котором мы находимся
If .EntireColumn.Hidden = False Then
'Выводим на экран подтверждающее сообщение
MsgBox ("Столбец уже показан")
Else
'Показываем столбец
.EntireColumn.Hidden = False
'Выводим на экран подтверждающее сообщение
MsgBox "Столбец показан"
End If
End With
'Выводим на экран подтверждающее сообщение
MsgBox "Действие закончено"
End Sub

125
Пример 6.3. Написать макрос УстановитьГоризонталь-
ное Выравнивание, в котором последовательно перебрать все
типы горизонтального выравнивания текста в заданной
ячейке B1.
Public Sub УстановитьГоризонтальноеВыравнивание()
'Выбираем первый рабочий лист
Worksheets(1).Select
'Вызываем процедуру очистки листа
AllClear
'Обращаемся к ячейке B1
With Range("В1")
'Задаем выделенному диапазону значение
.Value = "Кашу маслом не испортишь"
'Используем выравнивание xlGeneral
.HorizontalAlignment = xlGeneral
MsgBox "Используется выравнивание xlGeneral"
'Устанавливаем ширину столбца
.ColumnWidth = 50
MsgBox "Установлена ширина столбца=50"
'Используем выравнивание xlCenter
.HorizontalAlignment = xlCenter
MsgBox "Используется выравнивание xlCenter"
'Используем выравнивание xlRight
.HorizontalAlignment = xlRight
MsgBox "Используется выравнивание xlRight"
'Используем выравнивание xlLeft
.HorizontalAlignment = xlLeft
MsgBox "Используется выравнивание xlLeft"
'Устанавливаем стандартную ширину столбца
.UseStandardWidth = True
'Используем выравнивание xlJustify
.HorizontalAlignment = xlJustify
MsgBox "Используется выравнивание xlJustify"
'Используем выравнивание xlCenterAcrossSelection
Range(«В1»).HorizontalAlignment = xlCenterAcrossSelection
MsgBox "Используется выравнивание xlCenterAcrossSelection"
'Устанавливаем ширину столбца
.ColumnWidth = 100
MsgBox "Установлена ширина столбца=100"
'Используем выравнивание xlFill
.HorizontalAlignment = xlFill
MsgBox "Выравнивание xlFill"

126
End With
MsgBox "Действие закончено"
'Вызываем процедуру очистки листа
AllClear
End Sub
Пример 6.4. Написать макрос УстановитьОриентацию,
в котором последовательно перебрать все типы ориентации
текста в заданной ячейке В1.
Public Sub УстановитьОриентацию ()
'Выбираем первый рабочий лист
Worksheets(1).Select
'Обращаемся к ячейке B1
With Range("B1")
'Задаем ширину ячейки (и столбца в целом)
.ColumnWidth = 30
'Присваиваем диапазону значение
.Value = "Долг платежом красен"
'Используем выравнивание xlHorizontal
.Orientation = xlHorizontal
'Выводим на экран подтверждающее сообщение
MsgBox "Используется выравнивание xlHorizontal"
'Задаем высоту строки
.RowHeight = 150
'Используем выравнивание xlVertical
.Orientation = xlVertical
'Выводим на экран подтверждающее сообщение
MsgBox "Используется выравнивание xlVertical"
'Используем выравнивание xlUpward
.Orientation = xlUpward
'Выводим на экран подтверждающее сообщение
MsgBox "Используется выравнивание xlUpward"
'Используем выравнивание xlDownward
.Orientation = xlDownward
'Выводим на экран подтверждающее сообщение
MsgBox "Используется выравнивание xlDownward"
'Используем ориентацию 30 градусов
.Orientation = 30
'Выводим на экран подтверждающее сообщение
MsgBox "Используется выравнивание 30 град."
'Используем ориентацию –78 градусов
.Orientation = -78
'Выводим на экран подтверждающее сообщение

127
MsgBox "Используется выравнивание –78 град."
End With
'Выводим на экран подтверждающее сообщение
MsgBox "Действие закончено"
'Вызываем процедуру очистки листа
AllClear
End Sub
Пример 6.5. Написать макрос НастроитьРазмерТекста,
в котором последовательно присваивать заданной ячейке В1
строковые предложения разной длины при установленной авто-
матической настройке размера шрифта.
Public Sub НастроитьРазмерТекста ()
'Выбираем первый рабочий лист
Worksheets(1).Select
'Настраиваем размер шрифта
Worksheets(1).Range("B1").Font.Size = 12
'Обращаемся к столбцу B
With Range("В1")
'Устанавливаем ширину столбца
.ColumnWidth = 20
'Автоматически настраиваем размер шрифта текста под размер ячейки
.ShrinkToFit = True
'Присваиваем диапазону значение
.Value = "aaaaaaaaaaaaaaaaaaaa"
MsgBox "Сообщение из 20 букв"
'Присваиваем диапазону значение
.Value = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
MsgBox "Сообщение из 30 букв"
'Присваиваем диапазону значение
.Value = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
MsgBox "Сообщение из 40 букв"
'Присваиваем диапазону значение
.Value = "aaaaaaaaaa"
MsgBox "Сообщение из 10 букв"
'Выводим на экран подтверждающее сообщение
MsgBox "Вывод текста окончен"
End With
'Выводим на экран подтверждающее сообщение
MsgBox "Действие закончено"
'Вызываем функцию очистки листа

128
AllClear
End Sub
Задание 6.2. Работа с InputBox
Изменить код макроса примера 5 таким образом, чтобы:
1) текст сообщения предлагалось ввести в окне ввода (In-
putBox),
2) число букв в тексте сообщения определялось программно,
3) это число появлялось в информационном сообщении
MsgBox как переменная величина.
Пример 6.6. Написать макрос УстановитьВертикальное
Выравнивание, в котором последовательно перебрать все типы
вертикального выравнивания текста в заданной ячейке В1.
Public Sub УстановитьВертикальноеВыравнивание ()
'Выбираем первый рабочий лист
Worksheets(1).Select
'Обращаемся к столбцу B
With Range("В1")
'Ширина столбца
.ColumnWidth = 20
'Высота строк в диапазоне
.RowHeight = 50
'Присваиваем диапазону значение
.Value = "Кашу маслом не испортишь"
'Используем выравнивание xlCenter
.VerticalAlignment = xlCenter
'Выводим на экран подтверждающее сообщение
MsgBox "Используется выравнивание xlCenter"
'Используем выравнивание xlBottom
.VerticalAlignment = xlBottom
'Выводим на экран подтверждающее сообщение
MsgBox "Используется выравнивание xlBottom"
'Используем выравнивание xlTop
.VerticalAlignment = xlTop
'Выводим на экран подтверждающее сообщение
MsgBox "Используется выравнивание xlTop"
'Используем выравнивание xlJustify
.VerticalAlignment = xlJustify
'Выводим на экран подтверждающее сообщение
MsgBox "Используется выравнивание xlJustify"

129
End With
'Выводим на экран подтверждающее сообщение
MsgBox "Действие закончено"
'Вызываем функцию очистки листа
AllClear
End Sub
Пример 6.7. Написать два макроса СоединениеЯчеек
и РазъединениеЯчеек для заданного диапазона B1:B3 .
Public Sub СоединениеЯчеек ()
'Выбираем первый рабочий лист
Worksheets(1).Select
'Определяем диапазон
Range("B1:B3").Select
'Обращаемся к диапазону
With Selection
'Задаем ширину столбца «В»
.ColumnWidth = 20
'Соединяем ячейки
.Merge
'Используем выравнивание xlCenter
.HorizontalAlignment = xlCenter
'Присваиваем диапазону значение
.Value = "Ячейки объединены"
'Выводим на экран подтверждающее сообщение
MsgBox "Объединено три ячейки столбца В"
End With
'Выводим на экран подтверждающее сообщение
MsgBox "Действие закончено"
End Sub
Теперь запишем код макроса Разъединение ячеек.
Public Sub РазъединениеЯчеек ()
'Выбираем первый рабочий лист
Worksheets(1).Select
'Выделяем диапазон с объединенными ячейками
Range("B1:B3").Select
'Обращаемся к диапазону
With Selection
'Разъединяем ячейки
.UnMerge
'Используем выравнивание xlCenter

130
.HorizontalAlignment = xlCenter
'Присваиваем диапазону значение
.Value = "Ячейки разъединены"
'Выводим на экран подтверждающее сообщение
MsgBox "Разъединение закончено"
'Очищаем содержимое ячеек диапазона
.Clear
End With
Range(«A1»).Select
'Выводим на экран подтверждающее сообщение
MsgBox "Действие закончено"
AllClear
End Sub
Пример 6.8: Написать макрос УстановитьЦветТекста,
в котором последовательно перебрать 10 цветов, созданных
с помощью функции RGB и генератора случайных чисел.
Public Sub УстановитьЦветШрифта ()
'Объявляем переменные целого типа
Dim i, Красный, Синий, Зеленый As Integer
'Выбираем первый рабочий лист
Worksheets(1).Select
'Выделяем четыре ячейки первой строки
Range("B1:E1").Select
'Обращаемся к ячейке B1
With Range("B1")
'Присваиваем ячейке значение
.Value = "Кашу маслом не испортишь"
'Задаем размер шрифта
.Font.Size = 12
'Задаем полужирное начертание
.Font.Bold = True
'Цикл случайного изменения цвета текста
For i = 1 To 10
Красный = Int(255 * Rnd)
Зеленый = Int(255 * Rnd)
Синий = Int(255 * Rnd)
'Определяем значение цвета
.Font.Color = RGB(Красный, Зеленый, Синий)
MsgBox "Случайное изменение цвета шрифта"
Next
'Выводим на экран подтверждающее сообщение

131
MsgBox "Изменение цвета шрифта окончено"
End With
'Выводим на экран подтверждающее сообщение
MsgBox "Действие закончено"
'Вызываем функцию очистки листа
AllClear
End Sub
Пример 6.9. Написать макрос УстановитьШрифт, в ко-
тором последовательно перебрать разные форматы шрифта.
Public Sub УстановитьШрифт ()
'Выбираем первый рабочий лист
Worksheets(1).Select
'Выделяем четыре ячейки первой строки
Range("B1:E1").Select
'Обращаемся к ячейке B1
With Range("B1")
'Присваиваем ячейке значение
.Value = "Кашу маслом не испортишь"
With .Font
'Задаем название шрифта
.Name = "Times New Roman"
'Задаем полужирное начертание
.Bold = True
'Задаем размер шрифта
.Size = 26
'Задаем наклонное начертание
.Italic = True
'Выводим на экран подтверждающее сообщение
MsgBox «"Использование шрифта Times New Roman
полужирного курсивного размером 26 п. "
'Нижний индекс
.Subscript = True
'Выводим на экран подтверждающее сообщение
MsgBox "Написание нижним индексом"
'Верхний индекс
.Superscript = True
'Выводим на экран подтверждающее сообщение
MsgBox "Написание верхним индексом"
'Отключение верхнего индекса
.Superscript = False
'Текст перечеркивается линией
.Strikethrough = True

132
'Выводим на экран подтверждающее сообщение
MsgBox "Написание с перечеркиванием"
'Текст не перечеркивается линией
.Strikethrough = False
'Подчеркивает текст линией
.Underline = xlSingle
'Выводим на экран подтверждающее сообщение
MsgBox "Написание с одинарным подчеркиванием"
'Подчеркиваем текст двойной линией
.Underline = xlDouble
'Выводим на экран подтверждающее сообщение
MsgBox "Написание с двойным подчеркиванием"
End With
End With
'Выводим на экран подтверждающее сообщение
MsgBox "Действие закончено"
'Вызываем функцию очистки листа
AllClear
End Sub
Пример 6.10. Написать макрос преобразования чистого
рабочего листа в титульный лист рабочей книги Вашей компа-
нии. В макросе применить операции по изменению цвета фона,
формата текста и границ ячеек. Скройте ярлычки рабочих ли-
стов, полосы прокрутки листа, строки состояния и формул,
сетку ячеек и заголовки строк и столбцов.
Public Sub Задание10 ()
'Выбираем второй рабочий лист
Worksheets(2).Select
With Application
'Не видна строка состояния
.DisplayStatusBar = False
'Не видна строка формул
.DisplayFormulaBar = False
End With
With ActiveWindow
'Не видны линии сетки ячеек
.DisplayGridlines = False
'Не показываются заголовки строк и столбцов
.DisplayHeadings = False
'Не отображается горизонтальная полоса прокрутки
.DisplayHorizontalScrollBar = False

133
'Не отображается вертикальная полоса прокрутки
.DisplayVerticalScrollBar = False
'Не видны ярлычки рабочих листов
.DisplayWorkbookTabs = False
'Очищаем содержимое ячеек
Cells.Clear
'В цикле очищаем лист от всех объектов
For Each i In ActiveSheet.Shapes
i.Delete
Next i
'Размещаем кнопку на листе
ActiveSheet.Buttons.Add(200, 200, 80, 15).Characters.Text =
"Вернуться на Лист 1"
'По нажатию на кнопку вызывается макрос «reset»
ActiveSheet.Shapes(1).OnAction = "reset"
'Обращаемся к ячейке «E5»
With Range("E5")
'Равномерное распределение текста по вертикали
.Justify
'Присваиваем диапазону значение
.Value = "ТРЕКОМ"
With .Font
'Размер шрифта
.Size = 30
'Полужирное начертание
.Bold = True
'Наклонное начертание
.Italic = True
'Подчеркивание двойной линией
.Underline = xlDouble
End With
End With
'Обращаемся к ячейке «D10»
With Range(«D10»)
'Равномерное распределение текста по вертикали
.Justify
'Присваиваем диапазону значение
.Value = "Трейдинговая компания"
With .Font
'Размер шрифта
.Size = 15
'Полужирное начертание
.Bold = True

134
'Наклонное начертание
.Italic = True
'Подчеркивание линией
.Underline = xlDouble
End With
End With
With Cells
'Цвет шрифта
.Font.ColorIndex = 5
.Interior.ColorIndex = 25
End With
'Выводим на экран подтверждающее сообщение
MsgBox "Действие закончено"
End With
End Sub
Затем поместим на листе 2 Excel элемент Группа (Вставить
| Элементы управления формы | Группа) и внутри нее распо- ложим 12 кнопок (рис. 6.8). Названия кнопок дать в соответствии с названиям макросов.
Протестировать работу каждого макроса.
Рис. 6.8 — Сгруппированные кнопки запуска макросов

135
Задание 6.3. Формирование титульного листа
1. Создать макрос, оформляющий титульный лист для лабо- раторной работы по разделу 6.
2. Поместить на титульном листе кнопку перехода к содер- жанию, в котором происходит вызов всех вышеописанных мак- росов (примеры 1—9). Пример 5 должен быть с измененным ко- дом.

136
1   2   3   4   5   6   7   8   9   10


написать администратору сайта