_Click ()
'Вивантаження діалогового вікна і вихід
Unload Me
End
End Sub
В
Малюнок 8.2 - Зовнішній вигляд користувача форми InputsForm
Код обробки подій користувача форми InputsForm трохи складніше. У цьому випадку процедура UserForm_Initialize використовується для копіювання існуючих вхідних параметрів з аркуша Модель в поля введення даних на формі. Процедура OKButton_Click застосовується для копіювання введених користувачем даних назад на лист Модель. Спочатку перевіряється правильність значень, введених в текстові поля. Якщо текстове поле містить некоректну значення, то для користувача форма відображається повторно і в ній активізується поле з помилковим значенням. Якщо значення введені правильно, то за допомогою функції Val вони (рядкові значення) будуть перетворені в числовий формат і скопійовані у відповідні клітинки аркуша Модель. (Якби текстові поля повертали значення типу Single або Integer , то функція Val виявилася б не потрібна. Але оскільки значення текстового поля копіюється безпосередньо в комірки робочого листа, то функція Val просто необхідна, так як Excel буде інтерпретувати значення комірок як написи, а тому не дозволить виконувати над ними арифметичні операції.)
8.2 Алгоритм процедури вхідних даних моделі (OptionsForm)
В
Малюнок 8.3 - Алгоритм процедури вхідних даних моделі
8.3 Код обробки подій форми InputsForm
Private Sub UserForm_Initialize ()
Dim ctl As Control, DayIndex As Integer
'Вводить в поля значення з діапазонів Required,
'BonusPct і MaxPct, якщо такі існують
For Each ctl In Me.Controls
If TypeName (ctl) = "TextBox" Then
'Поля називаються Day1Box-Day7Box. Перші три символи в
'імені - "Day", а четвертий символ змінюється від 1 до 7
If Left (ctl.Name, 3) = "Day" Then
DayIndex = Mid (ctl.Name, 4, 1). Text = Range ("Required") _
. Cells (DayIndex) ctl.Name = "WeekdayBox" Then. Text = Range ("WeekdayRate") ctl.Name = "WeekendBox" Then. Text = Range ("WeekendRate" ). Text = Range ("MaxPct") If If S...