Лабораторная работа №4
Создание макросов. VBA.
Цель работы: освоение основных приемов и способов создания макросов. Использование VBA.
Задание
Необходимо автоматизировать расчет времени транспортировки груза различными видами транспорта, используя возможности VBA.
Решение:
Создайте новую Книгу в Microsoft Excel.
Введите данные согласно рисунку 2.
Рисунок 2
В нижней части документа ячейка (B9) содержится раскрывающийся список выбора транспорта, в ячейке B10 отображается время транспортировки груза выбранным способом.
После выбора элемента в раскрывающемся списке, должно открываться диалоговое окно, в котором необходимо заполнить несколько полей (рис.3)
Рисунок 3
После щелчка на кнопку ОК получаем конечный результат в ячейке В10.
Запустите Редактор Visual Basic.
Создайте четыре формы.
Процедура обработки щелчка на кнопке Отмена
Private Sub CommandButton2_Click()
UserForm1.Hide
Range("B10").FormulaR1C1 = Null
End Sub
Данная процедура одинакова для всех форм.
Процедура щелчка на кнопке ОК.
|
|
Форма 1
Private Sub CommandButton1_Click()
Range("B10").FormulaR1C1 = TextBox1.Value / TextBox2.Value + TextBox3.Value
UserForm1.Hide
End Sub
Форма 2
Private Sub CommandButton1_Click()
Range("B10").FormulaR1C1 = TextBox1.Value / TextBox2.Value + TextBox3.Value _
+ TextBox4.Value
UserForm2.Hide
End Sub
Форма 3
Private Sub CommandButton1_Click()
Range("B10").FormulaR1C1 = TextBox1.Value / TextBox2.Value + TextBox3.Value _
+ TextBox4.Value
UserForm3.Hide
End Sub
Форма 4
Private Sub CommandButton1_Click()
Range("B10").FormulaR1C1 = TextBox1.Value / TextBox2.Value + TextBox3.Value _
+ TextBox4.Value + 2 * TextBox5.Value * TextBox6.Value / TextBox7.Value
UserForm4.Hide
End Sub
Кроме того необходимо описать процедуру реакции приложения на изменение раскрывающегося списка.
Вставить модуль.
Public Sub Data(V)
Select Case V
Case 0
UserForm1.Show
Case 1
UserForm2.Show
Case 2
UserForm3.Show
Case Else
UserForm4.Show
End Select
End Sub
Далее вернуться к Excel. Вставить элемент управления ActivX поле со списком. ПЩ – Исходный текст
Описать процедуру
Private Sub ComboBox1_Change()
Data (ComboBox1.ListIndex)
End Sub