Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторный практикум. Ч-2.doc
Скачиваний:
12
Добавлен:
10.06.2015
Размер:
1.29 Mб
Скачать

Тема 4.2 Ввод новой записи в форме, обработка записей

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

Дополним исходную таблицу двумя полями: ПолиДата поступления на работу.

В редакторе VBAотобразим окно проекта и окно свойств (View/ProjectExplorerиView/PropertiesWindow), создадим пользовательскую форму (Insert/Userform), введем в нее элементы управления – пять надписей (Label), пять полей ввода (TextBox), две кнопки (CommandButton). Изменим свойства объекта форма – заголовок (Caption), шрифт (Font).

Добавим в проект Модуль (Insert/Module).

Процедура, активизирующая форму, содержит только одну команду

UserForm1.Show‘активизировать форму

Процедура, закрепленная за кнопкой Ввести

PrivateSubCommandButton1_Click() ‘личная процедура первой

командной кнопки формы

i= 1 ‘переменной, отвечающей за номер строки, присваиваем значение 1

WhileCells(i, 1) <>Empty‘цикл, до тех пор, пока в ячейкеiстроки и первого столбца не будет пусто

i=i+ 1 ‘увеличить номер анализируемой строки на 1

Wend‘закончить цикл

WithUserForm1 ‘действия с объектами формы

Cells(i, 1) = .TextBox1.Text‘ячейке текущей строки и первого столбца присвоить значение первого текстового поля формы

Cells(i, 2) = .TextBox2.Text

Cells(i, 3) = .TextBox3.Text

Cells(i, 4) = .TextBox4.Text

Cells(i, 5) = .TextBox5.Text

.Hide‘удалить форму с экрана

End With ‘закончить действия с формой

End Sub ‘конец процедуры

Рис. 4

Процедура, закрепленная за кнопкой Отмена

Private Sub CommandButton2_Click()

UserForm1.Hide

End Sub

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

Для этого создадим форму (рис. 5), в которой для ввода пола сотрудника используем переключатели (OptionBytton), для ввода должности – поле со списком (ComboBox), оклада – счетчик и поле ввода (SpinButtonиTextBox). Для удобства пользователя в качестве даты, заданной по умолчанию, примем текущую дату.

Рис. 5

Sub ввод_форма()

With UserForm2

.TextBox2 =Date‘второму полю ввода присвоить значение текущей даты

‘Второй лист содержит справочник должностей, заполняющий поле ‘ввода со списком

i= 1

WhileSheets("Лист2").Cells(i, 1) <>Empty‘

.ComboBox1.AddItem Sheets("Лист2").Cells(i, 1)

i = i + 1

Wend

.Show

End With

End Sub

‘Процедура очищает элементы управления формы или присваивает ‘им первоначальные значения для дальнейшего ввода

Sub clear_form()

With UserForm2

.TextBox1 =Empty‘очищается поле с фамилией

.OptionButton1.Value=True‘включается первая опция

.TextBox2 =Date‘устанавливается текущая дата

.TextBox3 = 1000 ‘первоначальное значение оклада присваивается полю ввода

.ComboBox1.ListIndex= 0 ‘в списке активизируется первый элемент

.SpinButton1.Value= 1000 ‘первоначальное значение оклада присваивается счетчику

End With

End Sub

‘Процедура закреплена за кнопкой Ввести

Private Sub CommandButton1_Click()

‘осуществляется поиск первой пустая ячейки в первом столбце

‘текущего листа

i = 1

While Cells(i, 1) <> Empty

i = i + 1

Wend

Cells(i, 1) =TextBox1

‘если включена первая опция, в ячейку текущей строки второго ‘столбца записывается “м”, в противном случае “ж”.

If OptionButton1.Value = True Then

Cells(i, 2) = "м"

Else

Cells(i, 2) = "ж"

End If

Cells(i, 3) = TextBox2.Text

Cells(i, 4) = ComboBox1.Text

Cells(i, 5) = TextBox3.Text

clear_form

End Sub

Процедура, закрепленная за кнопкой Отмена

PrivateSubCommandButton2_Click()

UserForm2.Hide

End Sub

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

Private Sub SpinButton1_Change()

TextBox3.Text = SpinButton1.Value

End Sub

Private Sub TextBox3_Change()

SpinButton1 = CCur(TextBox3.Text)

End Sub

Задание № 9. Создать программы по вводу новой записи и обработке с использованием пользовательских форм и различных элементов управления (см. табл. 5 и 6).

Задание № 10. Создать процедуру по поиску записей по символьному полю. Вывод найденных записей осуществить в пользовательской форме с возможностью перехода по записям вперед и назад.

Задание № 11. Создать процедуру по поиску записей из диапазона дат. Начальная и конечная даты вводятся на разных страницах формы, для ввода дня и года использовать счетчик, для ввода месяца – список (рис. 6). (* Предусмотреть проверку правильности ввода дат*).

Рис. 6

Задачи для самостоятельной работы приведены в прил. 1. В них необходимо разработать алгоритм решения задачи и создать процедуры, позволяющие заполнять часть рабочего листа Excelсогласно таблице. Исходным данным является размер квадратной заполняемой областиn, вводимой с помощью счетчика в пользовательской форме.