Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
27
Добавлен:
05.06.2015
Размер:
264.85 Кб
Скачать

Университет машиностроения Кафедра «Автоматика и процессы управления»

Направление подготовки «Управление в технических системах» Дисциплина «Информационные технологии»

Методические указания к лабораторно-практической работе

Использование средств автоматизации Excel и VBA

Создание элементов управления на рабочем листе

Тема: Исследование возможностей автоматизации Microsoft Excel с

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

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

Задачи:

Изучить возможности разработки средств автоматизации с использованием элементов управления;

Изучить методы создания диалоговых форм;

Изучить подходы к разработке пользовательских приложений для Ms Excel на

VBA for Excel;

Создать в слое векторной графики группу фигур по заданным параметрам;

Создать диалоговое окно для ввода и модификации фигур в слое векторной графики.

Оборудование и принадлежности:

Персональный компьютер с установленной операционной системой Microsoft

Windows, система управления электронными таблицами Microsoft Excel с

установленной средой Visual Basic for Applications

Ход выполнения работы:

Перед началом необходимо открыть файл рабочей книги с сохраненнйми макросами из предыдущей лабораторно-практической работы "Excel VBA_вариант.xlsm" в режиме «разрешения» макросов и сохранить с новым именем.

Часть 1

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

Диалоговые окна являются одним из эффективных методов повышения удобства пользования рабочими книгами Excel за счет обеспечения интерактивности при выполнении макрокоманд. При выполнении макросов часто требуется указание каких-либо параметров пользователем или выдача ему сообщений. Конечно, обмен данными можно реализовать через изменение значений ячеек рабочего листа, но это не всегда удобно, поскольку оставляет слишком большой диапазон неопределенности в действиях пользователя. В самом деле, ведь ячейка с сообщением, сформированным макросом может находиться вне текущей видимой области рабочего листа просто потому, что он переместился к другой области перед вызовом макроса.

Диалоговые окна появляющиеся поверх рабочих листов являются удобным способом общения с пользователем. Ранее были рассмотрены два типа встроенных диалоговых окон, активируемых функциями MsgBox и InputBox. Данные диалоговые окна придают программам гибкость, которой могут обладать только интерактивные программы, но их возможности в известной степени ограничены.

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

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

Для создания диалогового окна необходимо открыть редактор Visual Basic for Application (команда Сервис – Макросы – Редактор Visual Basic) и вставить в

2

проект Пользовательскую форму (Insert – UserForm). Объект UserForm – это заготовка будущего диалогового окна. Рядом с окном конструктора диалогового окна появляется инструментальная панель с элементами управления (Controls).

Выбрав необходимый элемент управления его можно поместить на форму

(выполнив щелчок на элементе управления, а затем выделив прямоугольник в позиции его будущего положения; или просто двойным щелчком на инструментальной панели). Дополнительные элементы управления можно подключить через меню Tools – Additional controls.

В инспекторе свойств (окно Properties) можно изменить свойства диалогового окна, например, цвет фона (BackColor), текст заголовка (Caption), внутреннее наименование (Name).

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

том числе и с самой формой).

Наиболее часто используемым событием при разработке пользовательских форм является щелчок (Click) левой кнопкой мыши на элементе управления.

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

Private Sub UserForm_Click()

UserForm1.Hide

End Sub

Данный код приведет к тому, что при щелчке на форме она будет становиться невидимой. Запустить форму на исполнение для проверки функциональности можно командой Run – Sub/UserForm. Для запуска формы из среды Excel

необходимо создать макрос, вызывающий команду показа формы, например,

следующего вида:

Sub FormStarter()

UserForm1.Show

End Sub

3

Дополнительное задание: Разработать форму, меняющую свой фоновый цвет при щелчке мышью.

Попробуем разработать форму, которая будет показывать наименование автомобиля при вводе его номера. Для этого на форму нужно поместить два текстовых бокса (TextBox) и одну командную кнопку (CommandButton). Система назначит им имена прибавляя цифры к названию (данные имена можно изменить,

но в примере используются автоматические). В обработчик нажатия на кнопку

(CommandButton1_Click) нужно поместить измененный код макроса поиска автомобиля, разработанный ранее:

Private Sub CommandButton1_Click()

Dim N As Integer

N = Val(TextBox1.Text)

If N > 0 And N <= 23 Then

TextBox2.Text = Cells(2 + N, 3).Value

Else

MsgBox ("Неверный номер автомобиля")

End If

End Sub

Модификация кода в данном случае заключается в том, что номер автомобиля мы получаем из свойства Text первого текстового бокса, а наименование автомобиля выводим в аналогичное свойство второго текстового бокса. Для удобства восприятия формы лучше заменить надпись на кнопке (свойство Caption

кнопки) и разместить на форме несколько меток (Label), с помощью которых можно оформить подписи к текстовым боксам (метки используются для

«нанесения» надписей на форме через их свойства Caption).

Контрольное задание: Разработать форму расчета ежемесячного платежа для выбранного автомобиля по предложенной кредитной программе (первичный платеж, проценты и срок кредита должны вводиться через текстовые боксы), все результаты должны выводиться в рублях.

4

Часть 2

Использование средств автоматизации Excel и VBA

Фигуры в слое векторной графики

VBA поддерживает общую модель объектов слоя векторной графики в

Microsoft Office. Верхним уровнем этой модели является коллекция Shapes,

содержащая все графические объкты (Shape-объекты), которые включаются в слой векторной графики. Кроме коллекции Shapes, можно в качестве коллекции нескольких Shape-объектов использовать коллекцию ShapeRange, объединяющую некоторое подмножество фигур в векторном слое (часть коллекции Shapes).

Добавление к коллекции Shapes «автофигур»

Прежде чем работать с Shape-объектом, необходимо добавить его к коллекции

Shapes, используя ее метод AddShape:

Expression.AddShape(Type, Left, Top, Width, Height)

Здесь expression – любое Shapes-выражение, Type – константа (тип Long),

определяющая тип фигуры и принимающая одно из msoAutoShapeType-значений

(например, msoShapeFlowchartData, msoShapeLeftBracket – всего около 140

констант), Left – положение левого угла автофигуры (измеряется в «поинтах»), Top

– положение верхнего угла автофигуры, Width – ширина автофигуры, Height –

высота автофигуры.

При добавлении в коллекцию Shapes фигура получает имя (свойство Name) по умолчанию, но его можно назначить, используя следующий синтаксис:

Expression.AddShape(Type, Left, Top, Width, Height).Name=имя_фигуры

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

mDocument.Shapes.SelectAll

Задание 1

Создать макрос, помещающий в слой векторной графики три фигуры

(прямоугольник, треугольник и «скручивающийся лист») (для определения типа фигур можно использовать константы msoShapeRectangle, msoShapeRightTriangle, msoShapeHorizontalScroll), а затем выделяющий все фигуры в коллекции

5

Задание 2

Модифицировать предыдущий макрос так, чтобы фигуры помещались на разные листы (использовать коллекцию WorkSheets - листы)

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

Shapes.Range(index)

Например, следующий пример устанавливает градиентную заливку для дввух фигур слоя:

ActiveSheet.Shapes.Range(Arrayy(1,2)).Fill.PresetGradient _ msoGradientHorisontal, 1, msoGradientLateSunset

Для обращения к фигуре из выделенного диапазона нежно использовать следующий синтаксис:

Selection.ShapeRange(index)

Добавление к коллекции специальных фигур

Помимо "обычных" фигур, к коллекции можно добавлять специальные фигуры (выноски, рамки и т.д.). Для этого используются специльные методы:

AddCallout - выноска без границ

AddCurve - кривая Безье

AddDiagram - диаграмма заданного типа

AddPicture - картинка из файла

AddPolyline - ломаная линия или многоугольник

AddTextBox - текстовый бокс

AddTextEffect - объект WordArt

Фигуры после добавления в коллекцию можно редактировать: перемещать,

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

Set myDocument=Worksheets(1)

6

With myDocument.Shapes.AddShape(msoShapeRectangle, 0, 0, 100, 40).TextFrame

.Characters.Text = "Пример текста в прямоугольнике"

.MarginBottom = 10

.MarginLeft = 10

.MarginRight = 10

.MarginTop = 10 End With

В данном примере дополнительно используются две возможности: задание псевдонима для объекта (Set ...) и задание объекта по умолчанию внутри коммандных скобок With ... End With. Внутри таких скобок в качестве родительского объекта для всех методов сначала используется тот, который указан после With.

Задание 3

Создать макрос, осуществляющий построение набора графических объектов на основании списка, введенного в ячейки листа Excel, начиная с ячейки (1,1).

Каждая строка таблицы должна содержать тип фигуры, координаты и размер объекта.

Задание 4

Модифицировать макрос так, чтобы создавалось несколько копий объектов.

Количество копий должно запрашиваться через окно диалога. Каждая следующая копия фигур должна сдвигаться на 5 пунктов вправо. По окончании вывода,

программа должна запрашивать необходимость повторения операц (с

использованием MsgBox).

Примечание. Программа должна определять количество объектов и создавать динамические массивы для сохранения типов и координат фигур.

Задание 5

7

Разработать диалоговую форму, позволяющую создавать фигуры по выбору и определять их размеры, положение, цвет, надпись.

Реализовать возможность выбора объекта среди существующих и редактирования его свойств.

Примечание. Выбор объекта может осуществляться либо перебором, либо с помощью ComboBox. Добавлять варианты выбора можно с помощью метода

ComboBox.AddItem(text)

Примечание. В случае использования ComboBox желательно предусмотреть на форме кнопку "Обновить" для повторного считывания коллекции фигур и заполнения списка.

Примечание. При необходимости реализовать запуск макроса при открытии документа, его необходимо вызвать из подпрограммы в модуле рабочей книги с описанием: Private Sub WorkBook_Open() ….необх.действия … End Sub.

8