Страницы

четверг, 1 августа 2013 г.

Пересчет температуры на VBA

Довольно простое задание по информатике — написать программу на VBA (пересчет температуры):

С помощью языка программирования VBA разработать программу пересчета температуры, измеренной по шкале Цельсия, в температуру по шкалам Фаренгейта и Реомюра.

Формулы пересчета:

1) T°F=(9/5T + 32)°C

2) T°C=(4/5T )°R

Выполнить это задание  можно в любой программе из пакета MS Office. Будем делать в Word.

В редакторе Visual Basic (alt+F11)  создаем главную форму программы – frmMain. Ширина – 365, высота 220. Заголовок (Caption) формы: «Пересчет температуры». На форме расположены четыре надписи (Label), три поля ввода (одно, tbCels, – для ввода значений температуры по Цельсию, два других, tbFahrenheit и tbR, для вывода рассчитанной температуры по Фаренгейту и Реомюру), две кнопки – btnCalc (для расчета) и btnCancel (для выхода из программы).

Форма программы VBA в режиме разработки
Форма VBA в режиме разработки
Рис.1  — Форма в режиме разработки

Текст программы

Option Explicit
‘нажатие кнопки «Вычислить»
Private Sub btnCalc_Click()
Dim C As Double 'переменная для обозначения температуры по Цельсию
Dim T As Double 'переменная для расчетов

'Очищаем текстовые поля от предыдущих значений и устанавливаем фокус на поле ввода значения температуры по Цельсию
tbFahrenheit.Text = ""
tbR.Text = ""
tbCels.SetFocus
'Если не введено значение, то выдается предупреждение пользователю
If Len(tbCels.Text) = 0 Then
MsgBox "Не введена температура по Цельсию"
tbCels.SetFocus
'если введенное значение некорректно, то выдается предупреждение, поле ввода очищается
ElseIf IsNumeric(tbCels.Text) = False Then
MsgBox "Введено неверное значение температуры"
tbCels.Text = ""
tbCels.SetFocus
'иначе делаем расчет и выводим значения в текстовые поля,
'преобразовав их предварительно в строку
Else
C = CDbl(tbCels.Text)
T = C * 9 / 5 + 32
tbFahrenheit.Text = CStr(T)
T = 5 * C / 4
tbR.Text = CStr(T)
End If
End Sub

‘ закрываем форму, кнопка Отмена
Private Sub btnCancel_Click()
hide
End Sub

‘Форма будет запускаться при открытии документа
Private Sub Document_Open()
frmMain.Show
End Sub

Функции использованы стандартные, из VBA. Форму можно украсить или изменить. Если при открытии документа Word форма не появляется, нужно поменять уровень безопасности на средний (Сервис->Макрос->Безопасность). В этом случае при открытии будет выдан запрос на отключение макросов. Следует нажать кнопку «Не отключать макросы».