Добавил:
По своей натуре перфекционист. Поэтому люблю все аккуратно оформлять и упорядочивать, складывать по полочкам. Вот, не пропадать же добру, нажитому за четыре кропотливых семестра. Тут я выложил все мои ответы, курсовые, отчеты и некоторые ДЗ. Они могут вам помочь для получения зачета или сдачи экзамена. Если чего-то не нашли в папочках, то попытайте удачу в разделе НЕОТСОРТИРОВАННОЕ на моей страничке, там все 4 семестра разложены по папкам. ГРУППА КТ-43-15. Годы обучения 2015-2019. Коллекция будет пополняться. Что ж, удачки :З Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

VBA (Стеценко) / VBA_ЛБ_13v2

.pdf
Скачиваний:
30
Добавлен:
15.09.2017
Размер:
1.87 Mб
Скачать

Стеценко А. А.

61

.Top = 20

.Left = 10

.Height = 18

.Width = 50

.BackColor = RGB(0, 255, 255) End With

With txtFam

.Top = 20

.Left = 65

.Height = 18

.Width = 80 End With

With lblImja

.Caption = "Имя:"

.Top = 40

.Left = 10

.Height = 18

.Width = 50

.BackColor = RGB(0, 255, 255) End With

With txtImja

.Top = 40

.Left = 65

.Height = 18

.Width = 80 End With

With lblOtch

.Caption = "Отчество:"

.Top = 60

.Left = 10

.Height = 18

.Width = 50

.BackColor = RGB(0, 255, 255) End With

With txtOtch

.Top = 60

.Left = 65

.Height = 18

.Width = 80 End With

With lblTur

.Caption = "Направление тура:"

.Top = 20

.Left = 170

.Height = 18

62 Программирование в среде электронных таблиц Microsoft Excel

.Width = 80

.BackColor = RGB(0, 255, 255) End With

With cboTur

.Top = 40

.Left = 170

.Height = 20

.Width = 90

.List = Array("Голубые озёра", "Золотые пески", _ "Сосны на дюнах", "Белые кружева",_ "Телецкое озеро", "Крымский каньон", _ "Янтарный берег")

.ListIndex = 0 End With

With fraPol

.Top = 90

.Left = 25

.Caption = "Пол"

.Height = 30

.Width = 120

.BackColor = RGB(0, 255, 255) End With

With optM

.Caption = "муж"

.BackColor = RGB(0, 255, 255)

.Top = 3

.Left = 6

.Width = 40 End With

With optF

.Caption = "жен"

.BackColor = RGB(0, 255, 255)

.Top = 3

.Left = 70

.Width = 40 End With

With lblSrok

.Caption = "Продолжительность тура:"

.BackColor = RGB(0, 255, 255)

.Left = 170

.Top = 80

.Height = 18

.Width = 110 End With

With txtSrok

Стеценко А. А.

63

.Left = 170

.Top = 98

.Height = 20

.Width = 40 End With

With spnSrok

.Left = 215

.Top = 98

.Height = 20

.Width = 20

.Orientation = fmOrientationVertical End With

'Задание свойств командных кнопок

With cmdOK

.Caption = "OK"

.Left = 80

.Top = 140

.Height = 20

.Width = 50

.Default = True

End With

 

With cmdCancel

.Caption = "Отмена"

.Left = 150

.Top = 140

.Height = 20

.Width = 50

End With

 

With cmdExit

.Caption = "Выход"

.Left = 220

.Top = 140

.Height = 20

.Width = 50

End With

 

End Sub

'end of UserForm_Initialize

Р6. Проверьте полученную форму. Для этого запустите на выполнение про-

грамму UserForm_Initialize. Дайте команду Run|Run Sub/ UserForm, кото-

рая дублируется клавишей F5 и кнопкой Run Sub/ UserForm на панели инструментов.

Р7. Закройте окно формы, щёлкнув по системной кнопке закрытия окна в правом верхнем углу формы. Вы окажетесь в модуле текста программы формы – окне кода. На завершающем этапе требуется создать несколько небольших подпрограмм реакций на события. Можно взять тексты и, не мудрствуя лукаво, потренироваться в использовании клавиатуры, но лучше освоить встро-

64

Программирование в среде электронных таблиц Microsoft Excel

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

Переход из окна конструктора форм в окно кода: щелчок по кнопке

View Code на панели инструментов Project Explorer, команда View | View Code в главном меню редактора VBA или нажатие на клавишу F7.

Переход из окна кода в режим конструктора форм: щелчок по кнопке

View Object на панели инструментов Project Explorer, двойной щелчок по имени формы в окне Project Explorer или нажатие комбинации клавиш

Shift + F7.

Р8. Перейдите в окно конструктора форм и сделайте двойной щелчок по кнопке cmdCancel. Вы окажетесь в окне кода программы cmdCancel_Click. Наберите тело программы cmdCancel_Click (листинг 29) (не забывайте о подсказках редактора и о методе Drag & Drop).

Листинг 29

Private Sub cmdCancel_Click() txtFam = ""

txtImja = "" txtOtch = "" spnSrok = 0 optF = False optM = False

End Sub

Р9. Перейдите в окно конструктора форм и сделайте двойной щелчок по кнопке cmdExit. Наберите текст программы cmdExit_Click (листинг 30).

Листинг 30

Private Sub cmdExit_Click() frmБудьтеЗдоровы.Hide Application.Caption = Empty

End Sub

Р10. Перейдите в окно конструктора форм и сделайте двойной щелчок по кнопке cmdOK. Наберите текст программы cmdOK_Click (листинг 31).

Листинг 31

Private Sub cmdOK_Click()

Dim Pol As String * 3

Dim FirstFree As Long

Dim theTitle As String

'Проверка заполненности полей ввода theTitle = "Регистрация"

'Проверка поля фамилии

If Trim(txtFam.Text) = "" Then

MsgBox prompt:="Заполните поле Фамилия:", _ Buttons:= vbExclamation, Title:=theTitle

txtFam.SetFocus

Стеценко А. А.

65

Exit Sub End If

'Проверка выбора пола

If (Not optM) And (Not optF) Then MsgBox prompt:="Выберите пол", _

Buttons:= vbExclamation, Title:=theTitle optF.SetFocus

Exit Sub End If

'Проверка продолжительности тура

If spnSrok < 1 Then

MsgBox prompt:="Продолжительность тура =?", _ Buttons:= vbExclamation, Title:=theTitle

spnSrok.SetFocus Exit Sub

End If

'Вывод данных на рабочий лист

Worksheets("БудьтеЗдоровы").Select

FirstFree = Range("b65535").End(xlUp).Row + 1 Cells(FirstFree, 1) = FirstFree - 1 Cells(FirstFree, 2) = txtFam.Text Cells(FirstFree, 3) = txtImja.Text Cells(FirstFree, 4) = txtOtch.Text

If optM Then Pol = "муж" Else Pol = "жен" Cells(FirstFree, 5) = Pol Cells(FirstFree, 6) = cboTur.Text Cells(FirstFree, 7) = spnSrok

'Очистка полей ввода txtFam.Text = "" txtImja.Text = "" txtOtch.Text = "" spnSrok.Value = 0 optF.Value = False optM.Value = False

End Sub

Р11. Перейдите в окно конструктора форм и сделайте двойной щелчок по счетчику spnSrok. Наберите текст программы spnSrok_Change (листинг 32).

Листинг 32

Private Sub spnSrok_Change()

'Ввод значения счетчика в текстовое поле txtSrok txtSrok.Text = CStr(.spnSrok.Value)

End Sub

Р12. Перейдите в окно конструктора форм и сделайте двойной щелчок по текстовому полю txtSrok. Наберите текст программы txtSrok_Change (листинг 33).

66 Программирование в среде электронных таблиц Microsoft Excel

Листинг 33

Private Sub txtSrok_Change()

'Установка значения счетчика в поле ввода spnSrok.Value = CInt(.txtSrok.Text)

End Sub

Р13. Нажмите клавишу F5 (или щёлкните по кнопке Run Sub/UserForm) и опробуйте действие элементов формы. Заполните все текстовые поля и

щёлкните по кнопке ОК.

Р14. Перейдите в окно приложения на лист БудьтеЗдоровы и посмотрите, добавилась ли там Ваша запись.

Р15. Закройте книгу, сохраните изменения.

Контрольные вопросы к работе VBA10

К1. Объясните назначение пользовательских форм.

К2. Объясните, почему пользовательскую форму называют также диалоговым окном пользователя?

К3. Как вставить пользовательскую форму в проект VBA? К4. Как присвоить имя пользовательской форме?

К5. Какие Вы знаете элементы управления, которые могут быть включены в пользовательскую форму?

К6. Как вставить элемент управления в пользовательскую форму? К7. Как выделить группу элементов управления в форме?

К8. При добавлении объекта в состав проекта ему сразу присваивается соответствующее стандартное имя с очередным порядковым номером. С какой целью производится переименование объектов?

К9. В чём состоит венгерская нотация?

К10. По каким правилам присваиваются имена объектам в пользовательской форме?

К11. Как получить на экране форму в режиме конструктора? К12. Как получить на экране форму в нормальном виде? К13. Как получить на экране окно редактора кода формы?

К14. Как перейти из окна редактора кода формы в окно конструктора форм? К15. Для чего предназначена программа UserForm_Initialize? Можно ли дать

этой подпрограмме другое имя?

К16. Как запустить на выполнение программу UserForm_Initialize?

К17. Какое назначение имеет свойство Caption? Приведите примеры использования этого свойства.

К18. Объясните назначение свойств Top, Left, Height, Width.

К19. Объясните назначение свойства BackColor и способы задания значения этому свойству.

К20. Для какой цели предназначена функция RGB?

К21. Какую функциональную роль играют командные кнопки?

Стеценко А. А.

67

К22. Для чего предназначен элемент управления Переключатель (OptionButton)? Приведите пример из своей формы.

К23. Объясните последовательность действий написания программы реакции на нажатие кнопки.

К24. Объясните назначение и действие инструкции

FirstFree = ActiveSheet.Range("b65355").End(xlUp).Row + 1

К25. Объясните назначение методов Show и Hide.

К26. Объясните назначение программы spnSrok_Change. Как она запускается? К27. Для чего используется функция CStr в программе spnSrok_Change?

К28. Объясните назначение программы txtSrok_Change. Как она запускается? К29. Для чего используется функция CInt в программе txtSrok_Change?

К30. Какие проверки имеются в программе cmdOK_Click? Для чего они нужны?

Работа VBA11. Создание интерфейса с программой

Цель работы: ознакомление с приёмами запуска программы пользователя.

Рабочее задание. Разработать и опробовать инструменты для запуска пользовательской формы frmБудьтеЗдоровы

Введение

Программа, разработанная в предыдущей работе, создаёт диалоговое окно для ведения учётных операций. Предполагаемый конечный пользователь этой программы – персонал турфирмы, который не обязательно обучен основам программирования. Если разработчика может устроить запуск программы из среды VBA, то для конечного пользователя требуется более удобный интерфейс. Например:

а) программа автоматически запускается при открытии книги Excel;

б) программа запускается щелчком по какой-нибудь кнопке или картинке.

ВExcel 2003 и более ранних версий не было проблем добавить кнопку с любым рисунком на одну из панелей инструментов. В Excel 2007 и более поздних версий можно добавить кнопку на панель быстрого доступа, имеется таже возможность вставить кнопку на оду из вкладок ленты, но это выполняется не средствами Excel.

Влюбой версии Excel можно поставить кнопку или другой элемент управления на рабочий лист. Роль элемента управления может выполнить картинка, рисунок или объект WordArt. Схема программных действий в этом случае получается следующая. Программа обработки события, например, щелчка по объекту, размещается в модуле листа. В программе достаточно поместить всего одну инструкцию, которая инициализирует форму:

frmБудьтеЗдоровы.Show

В работе рассматривается последний способ запуска программы.

68

Программирование в среде электронных таблиц Microsoft Excel

Рабочее задание 1. Вставить на рабочий лист командную кнопку для запуска пользовательской формы

Выполнение

Р1. Откройте свою книгу, активизируйте лист "БудьтеЗдоровы".

Р2. В Excel 2007/2010 дайте команду Разработчик | Элементы управления | Вставить (Developer | Controls | Insert) и вставьте на рабочий лист командную кнопку.

В Excel 2003 щёлкните правой кнопкой по какой-либо панели инструментов и выберите из контекстного меню панель Элементы управления. Выберите на ней командную кнопку и вставьте на рабочий лист.

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

Р3. Выполните:

а) откройте окно свойств (окно Properties) и замените в нём свойство Caption на "Регистрация"; окно свойств закройте; б) на панели Элементы управления щелкните по кнопке Исходный текст (или

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

Private Sub CommandButton1_Click()

End Sub

в) добавьте в заготовку программы приведённую выше инструкцию инициализации формы.

Р4. Перейдите в окно приложения и отожмите кнопку Конструктор форм. Всё готово. Осталось испытать полученный программный комплекс.

Щелкните по кнопке "Регистрация". В появившемся окне введите две-три позиции регистрации. Покажите результат преподавателю.

Рабочее задание 2. Вставить на рабочий лист объект WordArt для запуска пользовательской формы

Выполнение

Р5. Вставьте на рабочий лист объект WordArt, введите в него текст "Регистрация".

Р6. Перейдите в среду VBA, откройте модуль листа "БудьтеЗдоровы" и наберите в нём программу (название может быть другое) objClick (листинг 34);

Листинг 34

Sub objClick() frmБудьтеЗдоровы.Show

End Sub

Стеценко А. А.

69

Р7. Из контекстного меню объекта WordArt выберите пункт "Назначить макрос…" В диалоговом окне "Назначить макрос объекту" выберите созданную программу и подтвердите выбор. Снимите выделение с объекта WordArt (щёлкните за его пределами). Готово.

Щёлкните по объекту WordArt. Должно появиться диалоговое окно "Регистрация туристов фирмы Будьте здоровы!". Введите две-три позиции для проверки работоспособности программы. Покажите результат преподавателю.

Сохраните книгу.

Контрольные вопросы к работе VBA11

К1. Объясните способы запуска пользовательской формы на выполнение. К2. Как запустить пользовательскую форму на выполнение в среде VBA?

К3. Как запустить пользовательскую форму на выполнение в среде приложения?

К4. Как запустить пользовательскую форму на выполнение с помощью элемента управления? Где может находиться программа обработки события?

К5. Как запустить пользовательскую форму на выполнение с помощью объекта WordArt? Где может находиться программа обработки события?

Работа VBA12. Встроенные функции InputBox и MsgBox

Цель работы: ознакомление с приёмами использования встроенных диалоговых окон InputBox и MsgBox для ввода данных и вывода сообщений.

Введение

Функции InputBox и MsgBox имеются и в VBA, и в Excel. Несмотря на внешнюю схожесть, а также схожесть названий и назначений, между функциями Excel и VBA имеются различия в функциональности: функции Excel более интеллектуальны.

Функции InputBox и MsgBox образуют на экране собственное окно, поэтому их часто называют встроенными диалоговыми окнами.

Функция VBA InputBox

Функция VBA InputBox позволяет ввести одно текстовое значение. Синтаксис:

InputBox(Prompt[, Title] [, Default] _ [, XPos] [, YPos] _ [, Helpfile, Context])

Функция InputBox имеет несколько аргументов, но обязательным является только аргумент prompt.

Prompt – подсказка, текст, выводимый в основном окне функции. Текст должен подсказать пользователю, что нужно сделать.

70

Программирование в среде электронных таблиц Microsoft Excel

Title – заголовок окна. По умолчанию выводится "Microsoft Excel". Default – значение в поле ввода по умолчанию. Если аргумент не задан, то

поле ввода пустое.

XPos и YPos – горизонтальная и вертикальная координаты левого верхнего угла окна на экране, отсчитанные от левого верхнего угла экрана. Если аргументы не заданы, то окно центрируется по горизонтали в начале второй трети экрана по вертикали.

HelpFile и Context – файл и раздел справочной системы.

В листинге 35 приводится фрагмент программы, в котором строится обращение к функции InputBox, а на рис. 9 показано соответствующее окно InputBox

Листинг 35

Dim Answer As String, Def As String Dim Mess As String, theTitle As String theTitle = "Выбор устройства вывода"

Mess = "Выберите устройство вывода:" & vbLf & _ "1 – вывод на рабочий лист" & vbLf & _ "2 – вывод в файл на ЖД" & vbLf & _

"3 - вывод в файл на сменном носителе" & vbLf & _ "4 – вывод на печать"

Def = "1"

Answer = InputBox(prompt:=Mess, Title:=theTitle, _

Default:=Def)

. . .

Рис. 9. Окно функции InputBox в программе в листинге 35.

Наряду с применённым в приведённом фрагменте обращением к функции InputBox возможно и такое:

Answer = InputBox(Mess, theTitle, Def)

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

Соседние файлы в папке VBA (Стеценко)
  • #
    15.09.201752.92 Кб9SergeevA.xlsm
  • #
    15.09.20171.87 Mб30VBA_ЛБ_13v2.pdf
  • #
    15.09.2017799 б9ВосГазСорт.dat
  • #
    15.09.2017799 б9ВоспламГаз.dat
  • #
    15.09.201724.18 Кб9ВосплГаз.xlsm