- Регистрация
- 25.01.17
- Сообщения
- 763
- Реакции
- 225
- Репутация
- 292
Сегодня мой урок будет посвящен программированию на языке Visual Basic Application(VB6).Урок будет состоять из листинга простейшей программы и подробным объяснением каждого слова в коде. После окончания урока будет задание, которое я рекомендую выполнить. И так, начнём!
1.О Visual Basic 6
Visual Basic 6 - является продолжением своего предка - языка Бейсик (Basic), у которого он унаследовал дух, стиль и отчасти синтаксис. Visual Basic сочетает в себе процедуры и элементы объектно-ориентированных и компонентно-ориентированных языков программирования. Что бы работать на VB6 достаточно иметь одно из приложений MS Office. В MS Office он используется для создания макросов.
2.Программирование на VBA.
Для начала зайдём в Excel, и от туда в редактор Visual Basic 6.
Итак, когда у нас уже открыт редактор, можно приступить к программированию. У нас задача создать программу, которая вычисляет площадь круга, по ведённому пользователем радиусу.
2.1.Начало
Любая программа в Visual Basic начинается с обозначением начала и конца программы. При открытии окна редактора у нас уже будут автоматически введены процедуры начала и конца программы.
Sub Площадь_круга()
End Sub
2.2.Обявление переменных и констант.
В Visual Basic что бы задать переменную используется Dim:
Dim <имя переменной> As <Тип>
Чтобы создать константу используется Const:
Const<имя переменной> As <Тип> = <значение>
Типы данных, которые будут использоваться в нашей программе:
String - строковый тип. Предназначен для хранения строк различной длинны. Возможная длинна строки, может, доходит до 2-х миллионов символов кодировки Unicode. Объем памяти для хранения переменной выделяется в зависимости от длинны строки.
Variant – данный тип добавлен в Visual Basic 5 из версии 2.0. Переменная типа variant может содержать данные любого типа
Currency - данный тип может иметь до 4 цифр после запятой, и до 14 - перед ней. Внутри данного диапазона вычисления будут точными. Идентификатор представляет собой символ "@".
И так, мы водим:
Где: raD-радиус; rslt- результат;
Per-выводимая строка; ptitle – постоянный заголовок программы; pi-ПИ
2.3.Ввод данных.
Что бы обеспечить запрос пользователю на ввод данных потребуется использовать функцию InputBox.Вот как она работает:
P = InputBox(prompt[, title] [, default] [, xpos] [, ypos])
P – возвращаемое значение функции;
Prompt - приглашение к вводу title - строка заголовка default - значение, предлагаемое по умолчанию
Xpos и Ypos – координаты левого верхнего угла окна. Если оставить не измененным, то окно появится по середине экрана.
В нашем случае мы запрашиваем значение для переменной(raD)
2.4.Вычисление.
Прежде чем вычислять, вспомним формулу площади круга:
S = πR2, где число π = 3.141592… — константа.
Переменная S(rslt) у нас есть, константа π(pi) тоже есть и R(rad) тоже присутствует. Делаем вычисления:
В последней строке объединяем текст и число с помощью знака &, а функция FormatNumber(Rslt, 2) служит для округления числа(Rslt), где 2 количество знаков которые останутся после запятой.
2.5.Вывод результата на экран.
Для вывода на экран в VBA используется функция MsgBox. Вот как она работает:
MsgBox(prompt[, buttons] [, title]) prompt - текст сообщения; buttons -набор кнопок; title – заголовок.
В нашей программе MsgBox будет выглядеть вот так:
Вот что у нас получилось:
Листинг : Описание
Sub Площадь_круга()
Dim raD As Variant, Rslt As Currency, peR As String
Const ptitle As String = "Вычеслительплощадикруга"
Const pi As Currency = 3.1416 peR = "Введитерадиускруга" raD = InputBox(peR, ptitle)
Rslt = pi * raD ^ 2 peR = "Площадькругаравна = " peR = peR & FormatNumber(Rslt, 2)
MsgBox peR, ok + vbOKCancel, ptitle
End Sub
И так, теперь у нас всё готово и мы можем запускать программу(значок play синего цвета на верхней панели инструментов):
Появляется окошко водим любое число(я ввёл 20).И нажимаем Ок.
Всё нормально работает)Вроде как…Стоп! А если пользователь ввёдет вместо цифр буквы то:
Значит, нам нужно доработать программу и сделать «защиту от дураков сбоев».
2.6. «Защита от сбоев»
Эта защита нужна, что бы при вводе пользователем некорректных данных программа не завершалась с ошибкой. Для проверки веденных данных нам понадобиться оператор If.
If <Выражение> <число, переменная>
Then
<Действия, которые необходимо выполнить, если условие верное>
Else
<Действия, которые необходимо выполнить, если ложь.>
EndIf(окончание оператора)
Возьмём и изменим нашу основную часть программы:
Листинг : Описание peR = "Введите радиус круга" raD = InputBox(peR, ptitle)
Rslt = pi * raD ^ 2 peR = "Площадькругаравна = " peR = peR & FormatNumber(Rslt, 2)
MsgBox peR, ok + vbOKCancel, ptitle
На:
Листинг : Описание
1: peR = "Введитерадиускруга" raD = InputBox(peR, ptitle)
If IsNumeric(raD) = True Then
Rslt = pi * raD ^ 2 peR = "Площадькругаравна = " peR = peR & FormatNumber(Rslt, 2)
Else peR = "Введены некорректные данные!" & Chr(13) & "Введите число"
End If peR = peR & Chr(13) & "Выполнить расчет заново?"
If MsgBox(peR, ok + vbOKCancel, ptitle) = vbOK Then GoTo 1
И так, что получилось:
Оператор If проверяет условие IsNumeric(raD) = True(Содержимое является число), тогда выполняет вычисление и выводит на экран сообщение с результатом, противном случае выводит информацию о том, что введены некорректные данные и предлагает выполнить расчёт заново.
If MsgBox(peR, ok + vbOKCancel, ptitle) = vbOK Then GoTo 1
Эта строка выводит сообщение с текстом из переменой peR и если пользователь нажимает «Ок», то оператор GoTo 1 начинает выполнять программу с метки 1.
Проверим теперь программу:
Нажимаем "Ок"
Нажимаем "Ок"
Нажимаем "Ок"
Нажимаем "Отмена" и выходи из программы.
На этом наш урок подошолк концу.
А вот..чуть не забыл.
Задание:
Написать защиту от сбоев для этой программы:
Листинг : Описание
Sub Площадьтреугольника()
Dim var1 As Integer, var2 As Integer
Dim form As Integer, strmsg As String
Const ptitle As String = "Вычеслитель площади треугольника"
'var1 = ActiveSheet.Range("d12").Value
'var2 = ActiveSheet.Range("d13").Value var1 = InputBox("Введите значение стороны A", ptitle) var2 = InputBox("Введите значение стороны B", ptitle) form = var1 * var2 strmsg = "Площадь треугольника равна = " & form
MsgBox strmsg, vbInformation, ptitle
End Sub
1.О Visual Basic 6
Visual Basic 6 - является продолжением своего предка - языка Бейсик (Basic), у которого он унаследовал дух, стиль и отчасти синтаксис. Visual Basic сочетает в себе процедуры и элементы объектно-ориентированных и компонентно-ориентированных языков программирования. Что бы работать на VB6 достаточно иметь одно из приложений MS Office. В MS Office он используется для создания макросов.
2.Программирование на VBA.
Для начала зайдём в Excel, и от туда в редактор Visual Basic 6.
Итак, когда у нас уже открыт редактор, можно приступить к программированию. У нас задача создать программу, которая вычисляет площадь круга, по ведённому пользователем радиусу.
2.1.Начало
Любая программа в Visual Basic начинается с обозначением начала и конца программы. При открытии окна редактора у нас уже будут автоматически введены процедуры начала и конца программы.
Sub Площадь_круга()
End Sub
2.2.Обявление переменных и констант.
В Visual Basic что бы задать переменную используется Dim:
Dim <имя переменной> As <Тип>
Чтобы создать константу используется Const:
Const<имя переменной> As <Тип> = <значение>
Типы данных, которые будут использоваться в нашей программе:
String - строковый тип. Предназначен для хранения строк различной длинны. Возможная длинна строки, может, доходит до 2-х миллионов символов кодировки Unicode. Объем памяти для хранения переменной выделяется в зависимости от длинны строки.
Variant – данный тип добавлен в Visual Basic 5 из версии 2.0. Переменная типа variant может содержать данные любого типа
Currency - данный тип может иметь до 4 цифр после запятой, и до 14 - перед ней. Внутри данного диапазона вычисления будут точными. Идентификатор представляет собой символ "@".
И так, мы водим:
Где: raD-радиус; rslt- результат;
Per-выводимая строка; ptitle – постоянный заголовок программы; pi-ПИ
2.3.Ввод данных.
Что бы обеспечить запрос пользователю на ввод данных потребуется использовать функцию InputBox.Вот как она работает:
P = InputBox(prompt[, title] [, default] [, xpos] [, ypos])
P – возвращаемое значение функции;
Prompt - приглашение к вводу title - строка заголовка default - значение, предлагаемое по умолчанию
Xpos и Ypos – координаты левого верхнего угла окна. Если оставить не измененным, то окно появится по середине экрана.
В нашем случае мы запрашиваем значение для переменной(raD)
2.4.Вычисление.
Прежде чем вычислять, вспомним формулу площади круга:
S = πR2, где число π = 3.141592… — константа.
Переменная S(rslt) у нас есть, константа π(pi) тоже есть и R(rad) тоже присутствует. Делаем вычисления:
В последней строке объединяем текст и число с помощью знака &, а функция FormatNumber(Rslt, 2) служит для округления числа(Rslt), где 2 количество знаков которые останутся после запятой.
2.5.Вывод результата на экран.
Для вывода на экран в VBA используется функция MsgBox. Вот как она работает:
MsgBox(prompt[, buttons] [, title]) prompt - текст сообщения; buttons -набор кнопок; title – заголовок.
В нашей программе MsgBox будет выглядеть вот так:
Вот что у нас получилось:
Листинг : Описание
Sub Площадь_круга()
Dim raD As Variant, Rslt As Currency, peR As String
Const ptitle As String = "Вычеслительплощадикруга"
Const pi As Currency = 3.1416 peR = "Введитерадиускруга" raD = InputBox(peR, ptitle)
Rslt = pi * raD ^ 2 peR = "Площадькругаравна = " peR = peR & FormatNumber(Rslt, 2)
MsgBox peR, ok + vbOKCancel, ptitle
End Sub
И так, теперь у нас всё готово и мы можем запускать программу(значок play синего цвета на верхней панели инструментов):
Появляется окошко водим любое число(я ввёл 20).И нажимаем Ок.
Всё нормально работает)Вроде как…Стоп! А если пользователь ввёдет вместо цифр буквы то:
Значит, нам нужно доработать программу и сделать «защиту от дураков сбоев».
2.6. «Защита от сбоев»
Эта защита нужна, что бы при вводе пользователем некорректных данных программа не завершалась с ошибкой. Для проверки веденных данных нам понадобиться оператор If.
If <Выражение> <число, переменная>
Then
<Действия, которые необходимо выполнить, если условие верное>
Else
<Действия, которые необходимо выполнить, если ложь.>
EndIf(окончание оператора)
Возьмём и изменим нашу основную часть программы:
Листинг : Описание peR = "Введите радиус круга" raD = InputBox(peR, ptitle)
Rslt = pi * raD ^ 2 peR = "Площадькругаравна = " peR = peR & FormatNumber(Rslt, 2)
MsgBox peR, ok + vbOKCancel, ptitle
На:
Листинг : Описание
1: peR = "Введитерадиускруга" raD = InputBox(peR, ptitle)
If IsNumeric(raD) = True Then
Rslt = pi * raD ^ 2 peR = "Площадькругаравна = " peR = peR & FormatNumber(Rslt, 2)
Else peR = "Введены некорректные данные!" & Chr(13) & "Введите число"
End If peR = peR & Chr(13) & "Выполнить расчет заново?"
If MsgBox(peR, ok + vbOKCancel, ptitle) = vbOK Then GoTo 1
И так, что получилось:
Оператор If проверяет условие IsNumeric(raD) = True(Содержимое является число), тогда выполняет вычисление и выводит на экран сообщение с результатом, противном случае выводит информацию о том, что введены некорректные данные и предлагает выполнить расчёт заново.
If MsgBox(peR, ok + vbOKCancel, ptitle) = vbOK Then GoTo 1
Эта строка выводит сообщение с текстом из переменой peR и если пользователь нажимает «Ок», то оператор GoTo 1 начинает выполнять программу с метки 1.
Проверим теперь программу:
Нажимаем "Ок"
Нажимаем "Ок"
Нажимаем "Ок"
Нажимаем "Отмена" и выходи из программы.
На этом наш урок подошолк концу.
А вот..чуть не забыл.
Задание:
Написать защиту от сбоев для этой программы:
Листинг : Описание
Sub Площадьтреугольника()
Dim var1 As Integer, var2 As Integer
Dim form As Integer, strmsg As String
Const ptitle As String = "Вычеслитель площади треугольника"
'var1 = ActiveSheet.Range("d12").Value
'var2 = ActiveSheet.Range("d13").Value var1 = InputBox("Введите значение стороны A", ptitle) var2 = InputBox("Введите значение стороны B", ptitle) form = var1 * var2 strmsg = "Площадь треугольника равна = " & form
MsgBox strmsg, vbInformation, ptitle
End Sub