Слайд 1Visual Basic for Application
Разработка приложений пользователя
Автор: Тутыгин В.С.
Слайд 2Цитата дня
Говорят, Вы хорошо умеете писать?
Нет, Ваше Святейшество, я пишу
только из лености и ради экономии – чтобы не повторять
десять раз одно и то же.
(из биографии диакона Андрея Кураева)
Слайд 3Учебное пособие
http://www.unilib.neva.ru/dl/1586.pdf или http://v1.ifolder.ru файл 4789630- русскоязычная версия;
http://www.unilib.neva.ru/dl/1680.rar или http://v1.ifolder.ru
файл 838556 - англоязычная версия.
Уточнить ссылки (если нужно): www.yandex.ru (ключевое
слово – Тутыгин В.С.)
Слайд 4Приложение пользователя…
…представляет собой программу, решающую задачу пользователя средствами, имеющимися
в Microsoft Office, и предоставляющую графический интерфейс для работы с
этой программой.
Слайд 5Пример графического интерфейса для программы вычисления стоимости товара с учетом
скидок.
Слайд 6Пример графического интерфейса для программы компьютерного тестирования
Слайд 7Средства создания приложений пользователя
Приложения пользователя могут создаваться для работы в
среде Word, Excel, Access на языке VBA .
Слайд 8Характеристика языка VBA
Visual Basic for Applicatoins (VBA) относится к языкам
объектно-ориентированного программирования. Программа на VBA может содержать ключевые слова, операторы
(присваивания, безусловного и условного перехода, выбора варианта, цикла), переменные, константы и выражения.
Слайд 9Основные средства VBA
Объекты
Методы
Свойства
События
Слайд 10ОБЪЕКТЫ
Библиотека встроенных объектов VBA в среде Excel содержит более
100 объектов, находящихся на различных уровнях иерархии. Примеры объектов: Application
(Приложение), Workbooks (Рабочая книга), Worksheets (Лист рабочей книги), Chart (Диаграмма), CommandBar (Панель инструментов).
Слайд 11Основные объекты в Excel
Range – ячейка или диапазон ячеек;
UserForm –
пользовательская форма;
CommandButton – кнопка управления;
TextBox – окно для ввода/вывода текста;
ComboBox
– поле со списком;
CheckBox – флажок;
Label – надпись;
OptionButton – переключатель.
Слайд 12Ссылки на объекты в программе.
При ссылке на объект нужно
указывать не только имя объекта, но и "путь к нему",
например:
Application.Workbooks("WARES").Worksheets("База1").Range("A1:A12")
Если нужно запрограммировать подряд несколько действий, то "путь к объекту" можно указать один раз, используя конструкцию “With - End With”, например:
With ActiveSheet
.Range("B6").Value=17
.Range("B7").Value=100
End With
Слайд 13МЕТОДЫ
МЕТОД определяет действие (например, Clear, Copy, Cut, Delete), которое
будет совершаться над объектом. Синтаксис применения метода:
Объект.Метод().
Примеры
команд программы, определяющих действия над объектами:
UserForm.Hide;
Range("B20:B25").Activate
Слайд 14Примеры методов
UserForm.Show – открыть форму;
UserForm.Hide – скрыть форму;
Range(“A1:G17”).Select ;
Selection.Rows.AutoFit
Selection.Columns.AutoFit
Слайд 15МЕТОДЫ. Использование команд Excel.
Методы объекта Range могут использовать встроенные
в Excel команды: AutoFill, AutoFilter, Find, GoalSeek, Sort, Subtotal и
др.
Пример.
.Range("B8").GoalSeek Goal:=p ChangingCell:=.Range("B7")
Слайд 16СВОЙСТВА
СВОЙСТВО представляет атрибут объекта, определяющий его характеристики, например, цвет
или размер.
Слайд 17Типичные свойства
Value – значение;
Text – текст;
Caption – название;
Visible (True/False) –
видимый/скрытый;
Enabled (True/False) – разрешенный/запрещенный
Слайд 18Синтаксис команды установки значения свойства
Объект.Свойство=ЗначениеСвойства.
Примеры:
UserForm1.Caption=""
Range("B4").Value="Объем
ссуды"
Data=Application.PV(a,b,c)
Range("B5").NumberFormat="#,##0$"
CommandButton1.Cancel=True
Слайд 19СОБЫТИЯ
СОБЫТИЕ представляет собой действие (например, открытие UserForm, щелчок мышью, нажатие
клавиши), распознаваемое объектом. С событием можно связать процедуру на VBA,
которая будет запускаться на исполнение при возникновении события.
Слайд 20Примеры событий
Click – щелчок мыши;
DblClick – двойной щелчок мыши;
Initialize –
отображение формы;
Terminate – закрытие формы.
Слайд 21Синтаксис заголовка процедуры обработки события
Private Sub _
Пример заголовка
процедуры обработки события инициализации (открытия) окна UserForm2:
Private Sub UserForm2_Initialize()
Слайд 22Создание модуля
Модуль на языке VBA создается в форме определяемой
пользователем функции, которая, после ее написания в форме программы, будет
автоматически встроена в список функций Excel .
Слайд 23Visual Basic for Application
Основные операторы языка VBA
Слайд 24Оператор присваивания
Оператор присваивает значение выражения переменной, константе или свойству объекта.
Для присвоения переменной ссылки на объект применяется инструкция Set.
Слайд 25Оператор безусловного перехода GoTo
Задает безусловный переход на указанную строку внутри
процедуры. Обязательный аргумент Строка может быть меткой строки или номером
строки
Слайд 26Оператор условного перехода
If - Then - Else
Если условие принимает
значение True, то выполняется оператор или группа операторов после Then,
если False, то выполняется оператор или группа операторов после Else. Возможна конструкция без Else.
Слайд 27Оператор варианта Select-Case
Обеспечивает переход к оператору (группе операторов) с
меткой, соответствующей значению аргумента выражение, следующего после Case.
Слайд 28Оператор цикла For-Next
Повторяет выполнение оператора (группы операторов) пока переменная
цикла (счетчик) изменяется от начального до конечного значения с указанным
шагом. По умолчанию шаг равен единице.
Слайд 29Функция возвращает значение стоимости единицы товара с учетом скидок при
оптовой покупке (3%, 10% и 15% )и скидки постоянному клиенту
(5%)
Function Стоимость(Цена, Количество, Скидка)
If Количество < 100 Then
СтоимостьБезСкидки = Цена * Количество
Else
If Количество <= 200 Then
СтоимостьБезСкидки = Цена * Количество * 0.97
Else
If Количество <= 300 Then
СтоимостьБезСкидки = Цена * Количество * 0.9
Else
СтоимостьБезСкидки = Цена * Количество * 0.85
End If
End If
End If
If Скидка = 0 Then
Стоимость = СтоимостьБезСкидки
Else
Стоимость = СтоимостьБезСкидки * 0.95
End If
End Function
Слайд 30Создание UserForm
Для перехода в режим создания пользовательских форм нужно:
1.
открыть из окна Excel окно Visual Basic :
[Tools] - [Macro]
- [Visual Basic Editor];
2. во всплывающем окне “Visual Basic” открыть окно для создания пользовательской формы:
[Insert] - [UserForm].
В результате появится панель UserForm и панель элементов для ее конструирования.
Слайд 31Панель элементов UserFofm
TextBox
Label
ComboBox
CheckBox
OptionButton
CommandButton
Image
Слайд 32Основные элементы UserForm
TextBox - окно для ввода и вывода текста;
CommandButton
- кнопка, используемая для запуска процедуры на VBA;
OptionButton - кнопка,
возвращающая значение TRUE, если она нажата, и FALSE - если нет;
ToggleButton - выключатель, устанавливает одно из двух состояний
(TRUE или FALSE ) или одно из трех состояний (TRUE,
FALSE или NULL);
SpinButton - счетчик, возвращает текущее значение, при активизации кнопок счетчика число может увеличиваться или уменьшаться;
CheckBox - флажок, устанавливает одно из двух состояний
(TRUE или FALSE ) или одно из трех состояний (TRUE,
FALSE или NULL);
Label - возвращает текст, отображаемый в надписи;
Frame - рамка, визуально выделяет группы элементов управления в
Слайд 33Основные средства управления UserForm
Label - для создания надписей в UserForm
, например, заголовка текстового окна;
TextBox - для ввода и вывода
значений (строк текста и чисел).
ComboBox - для хранения списка значений. Отображается только один элемент списка;
ListBox - для хранения и отображения списка значений. Из списка можно выбрать одно значение, которое будет использовано в программе, запускаемой нажатием командной кнопки;
CheckBox - для ввода одного из двух (True, False) или (если установить True свойства TripleState) одного из трех (True, False, Null) значений;
CommandButton – кнопка для запуска программы;
Слайд 34Другие средства управления
ToggleButton - выполняет те же функции, что и
флажок;
OptionButton - выполняет те же функции, что и флажок, но,
если в UserForm или в группе (группировка переключателей производится элементом Frame) переключателей несколько, в состояние True можно установить только один переключатель - остальные автоматически перейдут в состояние False;
Frame - для группировки элементов управления. Основное свойство рамки – “Caption”, позволяющее задать название группы элементов;
TabStrip - создаются в UserForm, элементы управления могут размещаться на вкладках, однако, вкладки не обладают свойствами контейнеров. Это значит, что элементы управления фактически будут связаны с UserForm и будут только "просвечивать" через все вкладки.
Слайд 35Другие средства управления
Pages - создаются в UserForm, элементы управления могут
размещаться на страницах. Страницы обладают свойствами контейнеров. Это значит, что
элементы управления будут связаны с теми страницами, на которых они установлены, видны и действовать только на них;
ScrollBar - возвращает целое неотрицательное число.
Пример. При каждом нажатии кнопок ScrollBar или перемещении ползунка число в счетчике изменяется и выводится в TextBox.
SpinButton - выполняет те же функции, что и Полоса прокрутки, но не содержит ползунка.
Image - для "украшения" UserForm рисунком или мозаикой из рисунков (в последнем случае нужно установить “True” свойство “PictureTiling”);
Слайд 36Основные объекты в программах на VBA в Excel
Объекты Excel
Элементы управления
Application
UserForm
Workbook Label
Worksheet TextBox
Range OptionButton
Chart CheckBox
ComboBox
ListBox
Слайд 37
Примеры методов и свойств объектов Worksheet и семейства Worksheets
Знак «подчеркивание»
требуется, если часть операторного выражения
переносится в следующую строку.
Слайд 38Примеры методов и свойств объекта Range
Слайд 39Примеры методов и свойств объекта Range
Знак «подчеркивание» требуется, если часть
операторного выражения
переносится в следующую строку.
Слайд 40Примеры методов, свойств и событий элемента управления UserForm
Слайд 41Примеры методов, свойств и событий элемента управления TextBox
Слайд 42Примеры методов, свойств и событий элемента управления Label
Слайд 43Примеры методов, свойств и событий элемента управления CommandButton
Слайд 44Примеры методов, свойств и событий элемента управления OptionButton
Слайд 45Примеры методов, свойств и событий элемента управления CheckBox
Слайд 46Примеры методов, свойств и событий элемента управления Image
Слайд 47Примеры методов и свойств объекта Chart
Слайд 48Техника создания UserForm
1. Сконструировать панель UserForm, т.е. разместить на
этой панели нужные элементы и определить их свойства
2. Для
кнопок “CommandButton” создать запускаемые ими процедуры на языке VBA. Для этого:
а) двойным щелчком на изображении кнопки CommandButton вызвать окно программы.
б) ввести текст процедуры.
Слайд 49Запуск VBA-приложения из рабочей книги Excel
[Tools] – [Macro] – [Macros…];
В
окно Macro name всплывающего диалогового окна ввести имя макроса;
[Create];
В открывшемся
окне программ VBA с оболочкой процедуры ввести текст макроса: UserForm1.Show
Слайд 50Запуск приложения VBA с рабочего стола Windows
1. В окне [VBAProject()]
- [MicrosoftExcelObjects] – [ThisWorkbook] - записать процедуру:
Private Sub Workbook_WindowActivate(ByVal Wn
As Excel.Window)
UserForm4.Show
End Sub
2. Для открытия рабочей книги Excel, в которой создано приложение, ярлык этой рабочей книги нужно поместить на рабочем столе Windows.
Слайд 51Visual Basic for Application
Средства создания приложений пользователя. Создание и отображение
диаграмм
Слайд 52 VBA предоставляет возможность управлять созданием диаграмм в рабочей книге Excel,
отображать созданные диаграммы в UserForm.
Используются методы и свойства объекта Chart.
Слайд 53Пример программы с отображением диаграммы (Office 2003)
Private Sub CommandButton1_Click()
‘Пометка строки с данными для графика
Range("A2:K2").Select
‘Построение
диаграммы. Использован текст макроса
Charts.Add
ActiveChart.ChartType = xlLineMarkers
ActiveChart.SetSourceData Source:=Sheets(“Лист 1").Range("A2:K2")
ActiveChart.Location Where:=xlLocationAsObject, Name:=“Лист1"
With ActiveChart
‘Разрешение заголовка диаграммы
.HasTitle = True
‘Ввод заголовка диаграммы
.ChartTitle.Text = “ВАХ полупроводникового диода"
‘Преобразования диаграммы в рисунок формата jpg и запись рисунка в файл
.Export "graf1.jpg"
End With
‘Загрузка рисунка из файла в окноImage1
Image1.Picture = LoadPicture("graf1.jpg")
‘Установка режима отображенияStretch в окне
Image1.PictureSizeMode = 1
‘Открытие окна с изображением
Image1.Visible = True
End Sub
Слайд 54Пример программы с отображением диаграммы (Office 2003) Часть 1.
Private Sub
CommandButton1_Click()
‘Пометка строки с данными для графика
Range("A2:K2").Select
‘Построение диаграммы. Использован текст макроса
Charts.Add
ActiveChart.ChartType = xlLineMarkers
ActiveChart.SetSourceData Source:=Sheets(“Лист1”).Range("A2:K2")
ActiveChart.Location Where:=xlLocationAsObject,Name:=“Лист1”
Слайд 55Пример программы с отображением диаграммы (Office 2003) Часть 2.
With
ActiveChart
‘Разрешение заголовка диаграммы
.HasTitle = True
‘Ввод заголовка диаграммы
.ChartTitle.Text = “ВАХ полупроводникового_ диода”
‘Преобразования диаграммы в рисунок формата jpg и запись рисунка в файл
.Export "graf1.jpg"
End With
Слайд 56Пример программы с отображением диаграммы (Office 2003) Часть 3.
‘Загрузка
рисунка из файла в окноImage1
Image1.Picture = LoadPicture("graf1.jpg")
‘Установка режима отображения Stretch в окне
Image1.PictureSizeMode = 1
‘Открытие окна с изображением
Image1.Visible = True
End Sub
Слайд 57Visual Basic for Application
Средства VBA, улучшающие функциональность приложений пользователя
Автор: Тутыгин
В.С.
Слайд 58Средства VBA, улучшающие функциональность приложений пользователя
запрет ввода в окно, предназначенное
для вывода ;
присвоение клавишам Enter и Cancel функций кнопок на
панели UserForm ;
установка текста всплывающей подсказки для кнопок CommandButton;
всплывающие таблички с комментариями к элементам управления на панели UserForm ;
встроенные диалоговые окна InputBox и MsgBox
Слайд 59Запрет ввода в окно TextBox, предназначенное для вывода
Запрет ввода в
окно 5 , предназначенное для вывода
TextBox5.Enabled = False
Слайд 60Присвоение клавишам Enter и Cancel функций кнопок на панели UserForm
Назначение функции кнопки CommandButton1 клавише , CommandButton2 клавише :
CommandButton1.Default =
True
CommandButton2.Cancel = True
Слайд 61Установка текста всплывающей подсказки для элемента управления на панели UserForm
Установка
текста всплывающей подсказки для кнопки CommandButton1
CommandButton1.ControlTipText = "Расчет и составление
отчета на рабочем листе”
Слайд 62Встроенные диалоговые окна InputBox
Функция InputBox выводит на экран диалоговое окно,
содержащее сообщение и поле ввода, кнопки “OK” и “Cancel”. Устанавливается
режим ожидания ввода текста пользователем или нажатие кнопки, затем функция возвращает из текстового окна значение типа String, содержащее текст, введенный в поле.
Синтаксис (возможный):
InputBox("<Текст>","<Название окна>")
Пример:
Имя = InputBox("Введите Ваше имя", "Первый шаг")
Слайд 63Встроенные диалоговые окна MsgBox
Функция MsgBox выводит на экран диалоговое окно,
содержащее сообщение, и одну или несколько кнопок управления (состав кнопок
задается программно)
Функция возвращает число формата Integer, соответствующее тому, какая кнопка была нажата. Синтаксис:
A=MsgBox("<Текст>",[<имя набора кнопок>,]"<имя окна>")
Пример: A=MsgBox(“Справку вывести?”,vbOkCancel)
Слайд 64Пример внешнего вида диалоговой панели MsgBox
MsgBox "Ошибка в формате данных",
vbCritical, "Повторите ввод"
Слайд 65Пример внешнего вида диалоговой панели MsgBox
Слайд 66Обработка ошибок в программах на VBA
Обработка ошибок заключается в
формировании диагностических сообщений пользователю и аварийный выход из процедуры. При
разработке приложения на VBA необходимо предусматривать программные средства для обработки таких ошибок.
Слайд 67Типичные ошибки в программах на VBA
отсутствие исходных данных (запуск
приложения при вводе не всех исходных данных);
неверный формат введенных пользователем
исходных данных;
ввод значений исходных данных вне допустимого диапазона.
Слайд 68Отсутствие исходных данных. Неверный формат
Если в окно ввода ошибочно не
введено число, которое используется в программе, или введено число, но
не в том формате, а программа запущена, то при выполнении в программе инструкции типа а=CDbl(TextBox1.Text) произойдет ошибка "несоответствие типов".
Слайд 69Функции проверки типов
IsArray, IsDate, IsEmpty, IsError, IsNull, IsNumeric, IsObject.
Синтаксис: IsXxxx(переменная)
Слайд 70Пример проверки типов
If IsNumeric(TextBox1.Text)= False Then
MsgBox("Ошибка формата при вводе")
TextBox1.SetFocus
Exit Sub
End
Слайд 71Перехват ошибок
Каждая ошибка в VBA имеет свой код, например:
6
– переполнение;
9 – индекс выходит за пределы допустимого диапазона;
11 –
деление на нуль;
13 – несоответствие типа.
Слайд 72Программные средства перехвата ошибок
On Error GoTo Обработка
– в начале процедуры
………………………………………..
Обработка:
Select Case Err.Number
Case Is = 6
MsgBox «Произошла ошибка переполнения", vbInformation
TextBox1.Text = 1
TextBox2.Text = 1
Y = 1
X = 1
Resume
Case Is = 11
…………………………………….
Resume
End Select
End Sub
Слайд 73
Защита программного кода приложений пользователя
открыть окно программного кода;
[Tools] – [VBA
Project Properties…] – [Protections];
ввести пароль и подтверждение пароля в окна
«Password» и «Confirm Password» всплывающего диалогового окна «VBA Project – Project Properties»
Слайд 74Visual Basic for Application
Примеры разработки приложений пользователя
Слайд 75Приложение 1. Анализ доходов от издательской деятельности.
Требуется создать панель
интерфейса пользователя и программу, создающую таблицу Excel и получающую результаты
вычислений из таблицы.
На панели интерфейса пользователя нужно предусмотреть:
средства ввода изменяемых параметров в таблице: количество экземпляров,% накладных расходов, цена продукции, себестоимость продукции;
средства вывода результата расчета – прибыли от продажи продукции;
поле со списком для задания подбираемого параметра;
кнопки запуска процедуры расчета доходов, процедуры подбора параметра, выхода из программы.
Слайд 76Приложение 3. Анализ доходов от издательской деятельности.
Требуется создать программу, создающую
таблицу Excel и получающую результаты вычислений из таблицы.
Слайд 77Приложение 3. Анализ доходов от издательской деятельности.
На панели интерфейса пользователя
нужно предусмотреть:
средства ввода изменяемых параметров в таблице: количество экземпляров,% накладных
расходов, цена продукции, себестоимость продукции;
средства вывода результата расчета – прибыли от продажи продукции;
поле со списком для задания подбираемого параметра;
кнопки запуска процедуры расчета доходов, процедуры подбора параметра, выхода из программы.
Слайд 79Средства VBA для создания таблицы
Range("B4").Value="Объем ссуды"
Range("B5").Value=k
Range("B5").Value=35000
Range("B5").Formula="=A1*B17"
Задание ширины колонки А
в окне Excel
ActiveSheet.Columns("A:A").Select
With Selection
.ColumnWidth = 30
End With
Ввод
в ячейки таблицы текста,числовых значений и формул:
Слайд 80Средства VBA для создания поля со списком (ComboBox)
With ComboBox1
.AddItem "КолЭкз"
.AddItem "НаклРасх"
.AddItem "ЦенаКниги"
.AddItem "СебестКниги"
.ListRows = 4
End With