Упражнение 5. Разработка сложного приложения, которое создает базу данных для регистрации вкладов
1. В редакторе VBA разработать пользовательскую форму, показанную на рисунке 46. Рисунок 46. Форма диалогового окна для программы регистрации вкладов
2. Элементам управления присвойте имена и свойства в соответствии таблицей 6.1.
Таблица 6.1
3. Рабочему листу Excel c именем «Лист1» присвойте имя «Меню», а рабочему листу «Лист2» - «База». 4. На рабочем листе с именем «Меню» поместите элемент управления Кнопка панели элементов Visual Basic и поместите на ней надпись «Прием вклада». С помощью этой кнопки будет вызываться разрабатываемое диалоговое окно. 5. Для кнопки «Прием вклада» запишите код: Private Sub CommandButton1_Click() 'Вызываем процедуру формирования заголовков БД ЗаголовокРабочегоЛиста End Sub 6. Для формирования заголовков столбцов базы данных создайте процедуру Sub пользователя, которая будет вызываться из процедуры обработки кнопки рабочего листа Прием вклада. Для этого выполните команду меню Visual Basic Вставка, Процедура и присвойте ей имя ЗагловокРабочегоЛиста. Процедура выполняет следующие действия: · проверяет, заполнена ли первая строка – строка заголовков столбцов (по назначению ячейки А1), если заполнена, то не выполняет никаких действий, завершает работу и передает управление в точку вызова; · если первая строка не заполнена, то в ячейки первой строки рабочего листа записывает названия граф таблицы базы данных, комментарии к ним, закрепляет первую строку и завершает работу, передавая управление в точку своего вызова. В окне редактирования кода введите текст программы этой процедуры: Private Sub ЗаголовокРабочегоЛиста() 'Активизируем рабочий лист Application.Worksheets(" База").Activate 'Проверяем, есть ли названия столбцов БД With ActiveSheet If.Range(" A1").Value = " Фамилия" Then .Range(" A2").Select Else ActiveSheet.Cells.Clear 'Записываем названия столбцов Range(" A1: E1").Value = Array(" Фамилия", " Тип", " Сумма", " Отделение", " Примечание") 'Фиксируем первую строку .Range(" 2: 2").Select ActiveWindow.FreezePanes = True .Range(" A2").Select 'Вставляем комментарии .Range(" A1").AddComment .Range(" A1").Comment.Visible = False .Range(" A1").Comment.Text Text: =" Фамилия клиента" .Range(" B1").AddComment .Range(" B1").Comment.Visible = False .Range(" B1").Comment.Text Text: =" Тип вклада" .Range(" C1").AddComment .Range(" C1").Comment.Visible = False .Range(" C1").Comment.Text Text: =" Сумма вклада" .Range(" D1").AddComment .Range(" D1").Comment.Visible = False .Range(" D1").Comment.Text Text: =" Отделение банка" End If End With 'Вызываем элемент Форма с именем Вклад Вклад.Show End Sub 7. В процедуру обработки события Initialize формы введите код: Private Sub UserForm_Initialize() With Вклад .Северное.Value = True 'Установим длину элемента Список .ТипВклада.ListRows = 3 'Присвоим значения элементами списка .ТипВклада.List = Array(" Срочный", " Депозит", " Текущий") 'Установим фокус элементу Кнопка с именем Принять .Принять.SetFocus End With End Sub 8. В процедуру обработки события Initialize элемента Форма с именем «Вклад» запишите код: Private Sub Вклад_Initialize() 'Изменим название в строке заголовка приложения Application.Caption = " Регистрация. База данных Банк" 'Изменим название в строке заголовка Application.DisplayFormulaBar = False With Принять .Default = True 'Установка всплывающей подсказки .ControlTipText = " Ввод данных в базу данных" End With With Отмена .Cancel = True .ControlTipText = " Кнопка отмены" End With ЗаголовокРабочегоЛиста End Sub 9. В процедуру обработки события Click элемента Кнопка с именем «Принять» введите код: Private Sub Принять_Click() “Декларадция переменных Dim Фамилия As String Dim ТипВклада As String Dim СуммаВклада As Double Dim Отделение As String Dim Примечание As String Dim НомерСтроки As Integer 'Вычисление номера первой свободной строки НомерСтроки=_ Application.CountA (ActiveSheet.Columns(1)) + 1 With Вклад If.Фамилия.Text = " " Then MsgBox " Вы забыли указать фамилию", vbExclamation Exit Sub End If If.ТипВклада.Value = " " Then MsgBox " Вы забыли указать тип вклада", vbExclamation Exit Sub End If TextBox1 =.Фамилия.Text ТипВклада =.ТипВклада.Value If.Северное.Value = True Then Отделение = " Северное" If.Центральное.Value = True Then Отделение = " Центральное" If.Восточное.Value = True Then Отделение = " Восточное" If IsNumeric(.СуммаВклада.Text) = False Then MsgBox " Введена неверная сумма", vbExclamation Exit Sub End If СуммаВклада = CDbl(.СуммаВклада.Text) Примечание =.Примечание.Text End With 'Записываем данные в ячейки рабочего листа With ActiveSheet .Cells(НомерСтроки, 1).Value = Фамилия .Cells(НомерСтроки, 2).Value = ТипВклада .Cells(НомерСтроки, 3).Value = СуммаВклада .Cells(НомерСтроки, 4).Value = Отделение .Cells(НомерСтроки, 5).Value = Примечание End With End Sub 10. В процедуру обработки события Click элемента Кнопка с именем «Отмена» поместите код: Private Sub Отмена_Click() Dim НомерСтроки As Integer " Вычисляем номер последней строки НомерСтроки = Application.CountA(ActiveSheet.Columns(1)) 'Удаляем содержимое ячеек строки With ActiveSheet .Cells(НомерСтроки, 1).Value = " " .Cells(НомерСтроки, 2).Value = " " .Cells(НомерСтроки, 3).Value = " " .Cells(НомерСтроки, 4).Value = " " .Cells(НомерСтроки, 5).Value = " " End With End Sub 11. В процедуру обработки события Click элемента Кнопка с именем «Выход» поместите код: Private Sub Выход_Click() 'Активизируем рабочий лист с именем Меню Sheets(" Меню").Activate 'Завершаем выполнение программы End End Sub 12. Перейдите в приложение MS Excel, активизируйте рабочий лист Меню, изображенный на рисунке 47 и щелкните на кнопке «Прием вклада». Программа должна активизироваться, и на экране появиться созданное диалоговое окно (рисунок 46). Рисунок 47. Законченный вид листа «Меню»
13. Отладьте и проверьте работу программы во всех режимах. 14. Сохраните проект.
|