P_VBA_2007.ppt
- Количество слайдов: 63
Visual Basic for Application Технология создания приложений пользователя Автор: Тутыгин В. С.
Приложение пользователя… …представляет собой программу, решающую задачу пользователя средствами, имеющимися в Microsoft Office, и предоставляющую графический интерфейс для работы с этой программой.
Пример графического интерфейса для программы вычисления стоимости товара с учетом скидок.
Пример графического интерфейса для программы компьютерного тестирования
Средства создания приложений пользователя Приложения пользователя могут создаваться для работы в среде Word, Excel, Access на языке VBA.
Характеристика языка VBA Visual Basic for Applicatoins (VBA) относится к языкам объектно-ориентированного программирования. Программа на VBA может содержать ключевые слова, операторы (присваивания, безусловного и условного перехода, выбора варианта, цикла), переменные, константы и выражения.
Основные средства VBA Объекты Методы Свойства События
ОБЪЕКТЫ Библиотека встроенных объектов VBA в среде Excel содержит более 100 объектов, находящихся на различных уровнях иерархии. Примеры объектов: Application (Приложение), Workbooks (Рабочая книга), Worksheets (Лист рабочей книги), Range (Диапазон ячеек), Chart (Диаграмма), Command. Bar (Панель инструментов).
Ссылки на объекты в программе При ссылке на объект нужно указывать не только имя объекта, но и "путь к нему", например: Application. Workbooks("WARES"). Worksheets("База 1"). Ran ge("A 1: A 12") Если нужно запрограммировать подряд несколько действий, то "путь к объекту" можно указать один раз, используя конструкцию “With - End With”, например: With Active. Sheet. Range("B 6"). Value=17. Range("B 7"). Value=100 End With
МЕТОДЫ МЕТОД определяет действие (например, Clear, Copy, Cut, Delete), которое будет совершаться над объектом. Синтаксис применения метода: Объект. Метод(<список аргументов>). Примеры команд программы, определяющих действия над объектами: User. Form. Hide; Range("B 20: B 25"). Activate
МЕТОДЫ. Использование команд Excel Методы объекта Range могут использовать встроенные в Excel команды: Auto. Fill, Auto. Filter, Find, Goal. Seek, Sort, Subtotal и др. Пример. . Range("B 8"). Goal. Seek Goal: =p Changing. Cell: =. Range("B 7")
СВОЙСТВА СВОЙСТВО представляет атрибут объекта, определяющий его характеристики, например, цвет или размер.
Синтаксис команды установки значения свойства Объект. Свойство=Значение. Свойства. Примеры: User. Form 1. Caption="<заголовок формы>" Range("B 4"). Value="Объем ссуды" Data=Application. PV(a, b, c) Range("B 5"). Number. Format="#, ##0$" Command. Button 1. Cancel=True
СОБЫТИЯ СОБЫТИЕ представляет собой действие (например, открытие User. Form, щелчок мышью, нажатие клавиши), распознаваемое объектом. С событием можно связать процедуру на VBA, которая будет запускаться на исполнение при возникновении события.
Синтаксис заголовка процедуры обработки события Private Sub <имя объекта>_<имя события> Пример заголовка процедуры обработки события инициализации (открытия) окна User. Form 2: Private Sub User. Form 2_Initialize()
Создание модуля Модуль на языке VBA создается в форме определяемой пользователем функции, которая, после ее написания в форме программы, будет автоматически встроена в список функций Excel.
Функция возвращает значение стоимости единицы товара с учетом скидок при оптовой покупке (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 If Скидка = 0 Then Стоимость = Стоимость. Без. Скидки Else Стоимость = Стоимость. Без. Скидки * 0. 95 End If
Открытие вкладки «Разработчик» для работы в VBA 1. OFFICE – [Параметры Excel] ; 2. Во всплывающем окне «Параметры Excel» выбрать пункт «Основные» ; 3. Установить флажок «Показывать вкладку РАЗРАБОТЧИК на ленте»
Открытие окна VBA #Разработчик# - !Код! – [Visual Basic]
Создание User. Form Для перехода в режим создания пользовательских форм нужно: В окне “Microsoft Visual Basic” открыть окно для создания пользовательской формы: [Insert] - [User. Form]. В результате появится панель User. Form и панель элементов для ее конструирования.
Панель элементов User. Form Label Text. Box Combo. Box Check. Box Option. Button Command. Button Image
Основные элементы User. Form Text. Box - окно для ввода и вывода текста; Command. Button - кнопка, используемая для запуска процедуры на VBA; Option. Button - кнопка, возвращающая значение TRUE, если она нажата, и FALSE - если нет; Toggle. Button - выключатель, устанавливает одно из двух состояний (TRUE или FALSE ) или одно из трех состояний (TRUE, FALSE или NULL); Spin. Button - счетчик, возвращает текущее значение, при активизации кнопок счетчика число может увеличиваться или уменьшаться; Check. Box - флажок, устанавливает одно из двух состояний (TRUE или FALSE ) или одно из трех состояний (TRUE, FALSE или NULL); Label - возвращает текст, отображаемый в надписи; Frame - рамка, визуально выделяет группы элементов управления в
Основные средства управления User. Form Label - для создания надписей в User. Form , например, заголовка текстового окна; Text. Box - для ввода и вывода значений (строк текста и чисел). Combo. Box - для хранения списка значений. Отображается только один элемент списка; List. Box - для хранения и отображения списка значений. Из списка можно выбрать одно значение, которое будет использовано в программе, запускаемой нажатием командной кнопки; Check. Box - для ввода одного из двух (True, False) или (если установить True свойства Triple. State) одного из трех (True, False, Null) значений; Command. Button – кнопка для запуска программы;
Другие средства управления Toggle. Button - выполняет те же функции, что и флажок; Option. Button - выполняет те же функции, что и флажок, но, если в User. Form или в группе (группировка переключателей производится элементом Frame) переключателей несколько, в состояние True можно установить только один переключатель - остальные автоматически перейдут в состояние False; Frame - для группировки элементов управления. Основное свойство рамки – “Caption”, позволяющее задать название группы элементов; Tab. Strip - создаются в User. Form, элементы управления могут размещаться на вкладках, однако, вкладки не обладают свойствами контейнеров. Это значит, что элементы управления фактически будут связаны с User. Form и будут только "просвечивать" через все вкладки. Можно сделать программным путем элементы управления видимыми на одних вкладках и невидимыми на других.
Другие средства управления Pages - создаются в User. Form, элементы управления могут размещаться на страницах. Страницы обладают свойствами контейнеров. Это значит, что элементы управления будут связаны с теми страницами, на которых они установлены, видны и действовать только на них; Scroll. Bar - возвращает целое неотрицательное число. Пример. При каждом нажатии кнопок Scroll. Bar или перемещении ползунка число в счетчике изменяется и выводится в Text. Box. Spin. Button - выполняет те же функции, что и Полоса прокрутки, но не содержит ползунка. Image - для "украшения" User. Form рисунком или мозаикой из рисунков (в последнем случае нужно установить “True” свойство “Picture. Tiling”); Ref. Edit - используется для ввода ссылок на ячейки или диапазоны.
Техника создания User. Form 1. Сконструировать панель User. Form, т. е. разместить на этой панели нужные элементы и определить их свойства 2. Для кнопок “Command. Button” создать запускаемые ими процедуры на языке VBA. Для этого: а) двойным щелчком на изображении кнопки Command. Button вызвать окно программы. б) ввести текст процедуры.
Пример User. Form
Пример процедуры Private Sub Command. Button 3_Click() x = CDbl(Text. Box 2. Text) Range("B 3"). Value = x Range("B 4"). Formula = "=ACOS(B 3)" y = Range("B 4"). Value Text. Box 1. Text = CStr(Format(y, "######0. 0#######")) End Sub
Дополнительные элементы интерфейса пользователя всплывающие таблички с комментариями к элементам управления в User. Form; окна Input. Box и Msg. Box.
Функция Input. Box выводит на экран диалоговое окно, содержащее сообщение и поле ввода, кнопки “OK” и “Cancel”. Устанавливается режим ожидания ввода текста пользователем или нажатие кнопки, затем функция возвращает из текстового окна значение типа String, содержащее текст, введенный в поле.
Синтаксис функции Input. Box("<Текст>", "<Название окна>") Пример: Имя = Input. Box("Введите Ваше имя", "Первый шаг")
Функция Msg. Box выводит на экран диалоговое окно, содержащее сообщение, и одну или несколько кнопок управления (состав кнопок задается программно) Функция возвращает число формата Integer, соответствующее тому, какая кнопка была нажата. Синтаксис: Msg. Box("<Текст>", [<имя набора кнопок>, ]"<имя окна>")
Функция Msg. Box. Атрибуты. Варианты имен наборов кнопок: Vb. OKonly, Vb. OKCancel, Vb. Abort. Retry. Ignore, Vb. Yes. No. Cancel, Vb. Yes. No, Vb. Retry. Cancel. Пример: A = Msg. Box ("Справку вывести? ", vb. OKCancel) Select Case A Case vb. OK Msg. Box "<текст>"[, <значок сообщения>][, "<имя окна>"] End Select Возможные виды значков сообщения: vb. Information, vb. Critical, vb. Question, vb. Exclamation.
Обработка ошибок в программах на VBA Обработка ошибок заключается в формировании диагностических сообщений пользователю и аварийный выход из процедуры. При разработке приложения на VBA необходимо предусматривать программные средства для обработки таких ошибок.
Типичные ошибки в программах на VBA отсутствие исходных данных (запуск приложения при вводе не всех исходных данных); неверный формат введенных пользователем исходных данных; ввод значений исходных данных вне допустимого диапазона.
Отсутствие исходных данных. Неверный формат. Если в окно ввода ошибочно не введено число, которое используется в программе, или введено число, но не в том формате, а программа запущена, то при выполнении в программе инструкции типа а=CDbl(Text. Box 1. Text) произойдет ошибка "несоответствие типов".
Функции проверки типов Is. Array, Is. Date, Is. Empty, Is. Error, Is. Null, Is. Numeric, Is. Object. Синтаксис: Is. Xxxx(переменная)
Пример проверки типов If Is. Numeric(Text. Box 1. Text)= False Then Msg. Box("Ошибка формата при вводе") Text. Box 1. Set. Focus Exit Sub End If
Visual Basic for Application Примеры разработки приложений пользователя
Приложение 1. Расчет стоимости товара при оптовой покупке с учетом скидок. Требуется создать панель интерфейса пользователя и программу, использующую функцию «Стоимость» : Стоимость(Цена. Товара, Кол-во, Скидка) На панели интерфейса пользователя нужно предусмотреть: средства ввода параметров: Цена. Товара, Кол-во, Скидка; средства вывода результата расчета - стоимости товара при оптовой покупке с учетом скидок; кнопки запуска программы и выхода из программы.
Основные средства управления User. Form Label - для создания надписей в User. Form , например, заголовка текстового окна; Text. Box - для ввода и вывода значений (строк текста и чисел). Combo. Box - для хранения списка значений. Отображается только один элемент списка; List. Box - для хранения и отображения списка значений. Из списка можно выбрать одно значение, которое будет использовано в программе, запускаемой нажатием командной кнопки; Check. Box - для ввода одного из двух (True, False) или (если установить True свойства Triple. State) одного из трех (True, False, Null) значений; Command. Button – кнопка для запуска программы;
Пример графического интерфейса для программы вычисления стоимости товара с учетом скидок.
Средства ввода параметров: Цена. Товара, Кол-во – элементы Text. Box. Функции чтения из окон ввода числовых значений с преобразованием текстового представления числа в число в формате Integer или Double: i=CInt(Text. Box 1. Text) p=CDbl(Text. Box 2. Text)
Средства вывода 1. Средства вывода параметра Цена. Для. Покупателя – элемент Text. Box 2. Функция переформатирования вычисленных значений из числовой формы в текстовую и вывод их в диалоговые окна: Text. Box 3. Text = CStr(Format(p, "Fixed")), где CStr – функция преобразования числа в строку текста P – имя переменной; “Fixed” – формат числа.
Для чтения состояния элемента управления Check. Box… …используется метод Value. Пример: If Check. Box 1. Value = True Then Скидка = 1 Else Скидка = 0 End If
Функция «Стоимость» возвращает значение стоимости единицы товара с учетом скидок при оптовой покупке (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 If Скидка = 0 Then Стоимость = Стоимость. Без. Скидки Else Стоимость = Стоимость. Без. Скидки * 0. 95
Текст программы
Приложение 3. Анализ доходов от издательской деятельности. Требуется создать панель интерфейса пользователя и программу, создающую таблицу Excel и получающую результаты вычислений из таблицы. На панели интерфейса пользователя нужно предусмотреть: средства ввода изменяемых параметров в таблице: количество экземпляров, % накладных расходов, цена продукции, себестоимость продукции; средства вывода результата расчета – прибыли от продажи продукции; поле со списком для задания подбираемого параметра; кнопки запуска процедуры расчета доходов, процедуры подбора параметра, выхода из программы.
Приложение 3. Анализ доходов от издательской деятельности. Требуется создать программу, создающую таблицу Excel и получающую результаты вычислений из таблицы.
Приложение 3. Анализ доходов от издательской деятельности. На панели интерфейса пользователя нужно предусмотреть: средства ввода изменяемых параметров в таблице: количество экземпляров, % накладных расходов, цена продукции, себестоимость продукции; средства вывода результата расчета – прибыли от продажи продукции; поле со списком для задания подбираемого параметра; кнопки запуска процедуры расчета доходов, процедуры подбора параметра, выхода из программы.
User. Form
Средства VBA для создания таблицы Ввод в ячейки таблицы текста, числовых значений и формул: Range("B 4"). Value="Объем ссуды" Range("B 5"). Value=k Range("B 5"). Value=35000 Range("B 5"). Formula="=A 1*B 17" Задание ширины колонки А в окне Excel Active. Sheet. Columns("A: A"). Select With Selection. Column. Width = 30 End With
Средства VBA для создания поля со списком (Combo. Box) With Combo. Box 1. Add. Item "Кол. Экз". Add. Item "Накл. Расх". Add. Item "Цена. Книги". Add. Item "Себест. Книги". List. Rows = 4 End With
Средства VBA, улучшающие функциональность приложений пользователя запрет ввода в окно, предназначенное для вывода ; присвоение клавишам Enter и Cancel функций кнопок на панели User. Form ; установка текста всплывающей подсказки для кнопок Command. Button; всплывающие таблички с комментариями к элементам управления на панели User. Form ; встроенные диалоговые окна Input. Box и Msg. Box
Запрет ввода в окно Text. Box, предназначенное для вывода Запрет ввода в окна 5 и 6, предназначенные для вывода Text. Box 5. Enabled = False Text. Box 6. Enabled = False
Присвоение клавишам Enter и Cancel функций кнопок на панели User. Form Назначение функции кнопки Command. Button 1 клавише <Enter>, Command. Button 2 клавише <Esc>: With Command. Button 1. Default = True End With Command. Button 2. Cancel = True End With
Установка текста всплывающей подсказки для элемента управления на панели User. Form Установка текста всплывающей подсказки для кнопки Command. Button 1 With Command. Button 1. Control. Tip. Text = "Расчет и составление отчета _ на рабочем листе" End With
Встроенные диалоговые окна Input. Box Функция Input. Box выводит на экран диалоговое окно, содержащее сообщение и поле ввода, кнопки “OK” и “Cancel”. Устанавливается режим ожидания ввода текста пользователем или нажатие кнопки, затем функция возвращает из текстового окна значение типа String, содержащее текст, введенный в поле. Синтаксис (возможный): Input. Box("<Текст>", "<Название окна>") Пример: Имя = Input. Box("Введите Ваше имя", "Первый шаг")
Встроенные диалоговые окна Msg. Box Функция Msg. Box выводит на экран диалоговое окно, содержащее сообщение, и одну или несколько кнопок управления (состав кнопок задается программно) Функция возвращает число формата Integer, соответствующее тому, какая кнопка была нажата. Синтаксис: Msg. Box("<Текст>", [<имя набора кнопок>, ]"<имя окна>")
Варианты наборов кнопок и и значков сообщений на панелях Msg. Box Варианты имен наборов кнопок: Vb. OKonly, Vb. OKCancel, Vb. Abort. Retry. Ignore, Vb. Yes. No. Cancel, Vb. Yes. No, Vb. Retry. Cancel. Пример: A = Msg. Box ("Справку вывести? ", vb. OKCancel) Select Case A Case vb. OK Msg. Box "<текст>"[, <значок сообщения>][, "<имя окна>"] End Select Возможные виды значков сообщения: vb. Information, vb. Critical, vb. Question, vb. Exclamation.
Пример внешнего вида диалоговой панели Msg. Box "Ошибка в формате данных", vb. Critical, "Повторите ввод"
Пример внешнего вида диалоговой панели Msg. Box
The end
P_VBA_2007.ppt