Сегодня мой урок будет посвящен программированию на языке 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. Сделаю зеркало любого сайта в сети ТОR 2. Блокировка ЛЮБОГО QIWI Номера (Быстро) Мануалы и софт выложены в ознакомительных целях вся ответственность за использования ложится на вас. Софт советую использовать на виртуалке.