Создание собственных диалоговых окон средствами VBA. Примеры работы с диалоговыми сообщениями (msgbox) в VBA Линейные вычислительные процессы

Лекция для ЗФ

ОПЕРАТОРЫ ВВОДА И ВЫВОДА ДАННЫХ.

ЛИНЕЙНЫЕ ВЫЧИСЛИТЕЛЬНЫЕ ПРОЦЕССЫ

ОПЕРАТОР ПРИСВАИВАНИЯ LET

Оператор присваивания служит для вычисления значения выражения и присваивания этого значения переменной. При записи программы оператор Let можно опускать.

Формат оператора:

Имя_переменной = Выражение

SUMMA=X+COS(X)^2

Следует различать оператор присваивания и алгебраическое равенство. Оператор Y = A + B означает для ЭВМ: сложить содержимое ячеек памяти, отведенных для размещения значений переменных А и В, и поместить результат в ячейку памяти, отведенную для значения переменной Y. В программировании широко используется конструкция оператора присваивания типа I = I + 1. К заданному значению переменной I прибавляется 1, и результат помещается в ту же ячейку, заменив бывшую там информацию на новую. С точки зрения математики равенство i = i +1 не имеет смысла.

При присвоении переменным строковых значений их необходимо заключать в кавычки:

T = «Параметр 1»,

а значения типа Дата/Время заключать в символы # («решетка»):

D = #11/29/2008#

ОПЕРАТОРЫ ВВОДА ДАННЫХ

Рассмотрим три основных способа ввода данных.

1. Запись значений переменных непосредственно в тексте программы осуществляется с помощью оператора присваивания .

Имя_переменной = Выражение

Этот способ используется, если исходные данные не изменяются при нескольких исполнениях программы.

2. Ввод данных из ячеек рабочего листа Excel .

Для этого используется инструкция С ells (i , j ) , которая в данном случае выступает как функция ввода данных. Формат использования:

Имя_переменной = С ells (i , j ) ,

где i , j – порядковые номера соответственно строки и столбца (числовые значения!), на пересечении которых находится ячейка, т. е. адрес ячейки.

При этом следует иметь в виду, что данные на листе Excel уже имеются .

Пример: А = Сells(1, 2)

После выполнения этой команды переменной А присвоится значение, которое хранится в ячейке, находящейся в первой строке (первая цифра) и во втором столбце (вторая цифра), т. е. в ячейке B1 электронной таблицы.

3. Ввод данных непосредственно в ходе выполнения программы , т. е. в диалоговом режиме, выполняется с помощью диалогового окна ввода информации, реализуемого функцией InputBox . Основной формат этой функции:

Имя_переменной = InputBox (“Сообщение” [, “Заголовок”] [, “Значение”]) .

В ходе работы программы при выполнении данной команды на экране монитора появляется диалоговое окно с указанным Заголовком , содержащее текст Сообщения , а также поле ввода с указанным Значением:

Выполнение программы приостанавливается в ожидании ввода данных с клавиатуры и нажатия одной из кнопок. После ввода информации и нажатия на кнопку ОК переменной присваивается значение типа String (строковый тип данных), содержащее текст , введенный в поле ввода.

Пример: x = InputBox(“Введите x”, “Ввод исходных данных”, “0.15”)

Имя окна можно опустить (при этом местоположение запятых сохраняется):

x = InputBox("Введите x", "0.15")

Функция InputBox используется, когда исходные данные меняются при каждом запуске программы , поэтому обычно значение переменной не задается и применяется простейший вариант записи этой функции:

Имя_переменной = InputBox (“Сообщение”)

Пример: d = InputBox(“Введите значение диаметра”)

Если в поле ввода в появившемся диалоговом окне ввести 23, то в переменную d будет записан текст “23”, а не число 23. Текстовая строка “23” представляет собой лишь визуальное отображение числа, но не является числом в буквальном смысле слова, т. е. с ним, как и с любым другим текстом, нельзя производить никаких арифметических действий.

Для преобразования строкового типа данных в числовой тип используется функцияVal (Строка ) , которая возвращает число, содержащееся в Строке , как числовое значение соответствующего типа.

При записи в коде программы

d = Val(InputBox(“Введите значение диаметра”))

и вводе в поле ввода цифр 23 переменной d присвоится число 23.

ОПЕРАТОРЫ ВЫВОДА ДАННЫХ

Рассмотрим три основных способа вывода данных.

1. Вывод в диалоговое окно с помощью команды MsgBox:

MsgBox "Сообщение", "Заголовок"

В результате выполнения этой команды на экране появляется диалоговое окно Заголовок , содержащее указанный текст Сообщения . Выполнение программы приостанавливается до нажатия пользователем кнопки ОК.

Пример: MsgBox y , "Результат"

В данном случае в качестве выводимого в окно Результат сообщения задано текущее значение переменной y :

Простейший формат записи оператора MsgBox:

MsgBox "Сообщение"

Обычно сообщение включает в себя не только выводимое значение, но и комментарий, который заключается в кавычки. Для слияния нескольких фрагментов в одну строку в операторе вывода их разделяют знаком & .

Пример: MsgBox “Значение диаметра =” & d

В результате на экране появится следующее диалоговое окно:

2. Вывод данных на лист рабочей книги Excel с использованием инструкции С ells (i , j ) . В этом случае в отличие от ранее рассмотренного она выступает как команда вывода:

C ells (i , j ) = "Сообщение".

В результате этой команды указанное Сообщение помещается в ячейку с адресом, определяемым номером строки i и номером столбца j .

Cells(1, 1) = “x=” ‘Вывод в ячейку A 1 текста x =

Cells(1, 2) = x ‘Вывод в ячейку B 1 текущего значения переменной x

3. Вывод данных в окно отладки Immediate («Немедленно»). Это окно обычно располагается под окном программного кода. Если этого окна нет, то его можно вывести, нажав Ctrl+G или из главного меню VBA View Immediate Window .

Для вывода в окно отладки применяется метод Print (печать) объекта Debug (отладчик). Формат записи:

Debug.Print ["Сообщение"]

Пример: Debug.Print “Значение диаметра =” & d

Как видно из этого примера, команда Debug.Print используется аналогично команде MsgBox.

Пустой (т. е. без Сообщения ) метод Debug.Print выводит пустую строку.

Помимо знака & в методе Print возможно использование разделителей списка выводимых данных. При этом знак «; » означает вывод очередного значения непосредственно за предыдущим, знак «, » – переход к началу новой зоны печати (окно отладки делится на 5 вертикальных зон по 14 символов каждая). При вводе знак «; » между элементами выводного списка можно опускать, VBA добавит его автоматически.

Запятая или точка с запятой в конце выводного списка в команде Debug.Print подавляет переход на новую строку (следующий Debug.Print начнет печать в той же строке).

Пример: Debug.Print "Результат y="; y;

В любом операторе вывода (MsgBox, Cells, Debug.Print) возможен вывод не только готовых результатов, но и одновременный расчет и вывод:

Debug.Print "s = "; s, " k1+k2 = "; k1 + k2

MsgBox "Если диаметр = " & d & ", то радиус = " & d / 2

Для вывода числового значения в заданном формате в операторах вывода MsgBox, Debug.Print вместо имени переменной следует использовать функцию Format с указанием количества десятичных знаков.

Debug.Print z ‘вывод переменной z обычным образом

Debug.Print Format (z , "#0. 00 ") ‘вывод переменной z с 2-мя десятичными знаками

MsgBox Format (z , "#0. 000 ") ‘вывод переменной z с 3-мя десятичными знаками

В операторе вывода Cells функцию Format использовать не рекомендуется.

ЛИНЕЙНЫЕ ВЫЧИСЛИТЕЛЬНЫЕ ПРОЦЕССЫ

Простейшими являются программы, реализующие алгоритмы линейного вычислительного процесса. Программа в этом случае содержит операторы ввода данных, присваивания и вывода данных. Операторы записываются последовательно друг за другом в естественном порядке их следования и выполняются только один раз.

Общая структура линейной программы:

Option Explicit

Sub Имя _ процедуры ()

Объявление констант (Const )

Объявление переменных (Dim )

Тело процедуры:

Ввод исходных данных

Вычисления

Вывод результатов

End Sub

Пример_Л1. Составить ГСА и текст программы для вычисления функции:

где x = a∙t 2 + 0.2 , a = 18, t – произвольное.

ГСА Текст программы:

Option Explicit ‘Запрет использования необъявленных переменных

Sub Лин_процесс1() ‘Начало процедуры Лин_процесс1

Const a = 18 ‘Объявление константы a

Dim t As t

Dim x As Single ‘Объявление вещественной переменной x

Dim y As Single ‘Объявление вещественной переменной y

t = Val(InputBox("Введите t")) ‘Ввод значения t

x = a * t ^2 + 0.2 ‘Расчет x

y = (x ^ 2 + Log(x) - (x + 1) ^ 2) / (x * Sin(x)) ‘Расчет y

MsgBox "Результат y=" & y ‘Вывод y в диалоговое окно

End Sub ‘Конец процедуры

Ниже приведено решение того же примера с использованием других способов ввода и вывода данных.

Подобно многим языкам программирования Visual Basic for Application (VBA) позволяет создать три типа процедур: Sub, Function, Property.

Процедура – это набор описаний и инструкций, сгруппированных для выполнения.

Процедура Sub – набор команд, с помощью которого можно решить определенную задачу. При ее запуске выполняются команды процедуры, а затем управление передается в приложение или процедуру, которая вызвала процедуру Sub. Записываемые макросы автоматически описываются как процедуры Sub, любой макрос или другой код VBA, который просто выполняет определенный набор действий, используя приложения Office, и обычно является процедурой Sub.

Процедура Function (или функция) также представляет собой набор команд, который решает определенную задачу. Различия заключается в том, что процедуры данного типа обязательно возвращают значение. При создании процедуры Function можно описать тип данных, который возвращает функция. Функции обычно используются при выполнении вычислений, операциями с текстом, либо возвращают логические значения.

Процедура Property используется для ссылки на свойство объекта. Данный тип процедур применяется для установки или получения значения пользовательских свойств форм и модулей. Процедуры облегчают хранение и применение информации, если использовать их сначала для сохранения в свойстве этой информации, а затем для ее чтения.

Структура процедуры

При записи процедуры требуется соблюдать правила ее описания. Упрощенный синтаксис для процедур Sub является следующим:

Sub имя ([ аргументы] ) Инструкции End Sub

Синтаксис описания функций очень похож на синтаксис описания процедуры Sub, однако, имеются некоторые отличия:

Function имя ([ аргументы] ) [ As Тип] Инструкции имя = выражение End Function

Использование операторов

Процедуры состоят из операторов – наименьших единиц программного кода. Как правило, операторы занимают по одной строке программного кода, и в каждой строке обычно содержится только один оператор, но это не обязательно. В VBA имеется четыре типа операторов: объявления, операторы присваивания, выполняемые операторы и параметры компилятора.

Объявления

Объявление – это оператор, сообщающий компилятору VBA о намерениях по по­воду использования в программе именованного объекта (переменной, константы, поль­зовательского типа данных или процедуры). Кроме того, объявление задает тип объекта и обеспечивает компилятору дополнительную информацию о том, как ис­поль­зовать данный объект. Объявив объект, можно использовать его в любом месте программы.

Переменные – это именованные значения, которые могут изменяться во время выполнения программы.

Рассмотрим пример объявления переменной.

С помощью оператора Dim объявляется переменная с именем МоеЛюбимоеЧисло и объявляется, что значение, которое она будет содержать, должно быть целым:

Dim МоеЛюбимоеЧисло As Integer

Константы представляют собой именованные значения, которые не меняются.

Оператор Constant создает строковую константу (текст) с именем НеизменныйТекст , представляющую собой набор символов Вечность :

Constant НеизменныйТекст = "Вечность"

Оператором Type объявляется пользовательский тип данных с именем Самоделкин , определяя его как структуру, включающую строковую переменную с именем Имя и переменную типа Date с именем ДеньРождения . В данном случае объявление займет несколько строк:

Type Самоделкин Имя As String ДеньРождения As Date End Type

Объявление Private создает процедуру типа Sub с именем СкрытаяПроцедура , говоря о том, что эта процедура является локальной в смысле об­ласти видимости. Завершающий процедуру оператор End Sub считается частью объ­явления.

Private Sub СкрытаяПроцедура () инструкции End Sub

Оператор присваивания

Оператор присваивания = приписывают переменным или свойствам объектов конкретные значения. Такой оператор всегда состоят из трех частей: имени переменной, или свойства, знака равенства и выражения, задающего нужное значение.

Оператор = присваивает переменной МоеЛюбимоеЧисло значение суммы переменной ДругоеЧисло и числа 12 .

МоеЛюбимоеЧисло = ДругоеЧисло + 12

В следующей строке кода, записывается, что свойству Color (Цвет) объекта AGraphicShape присваивается значение Blue (Синий) в предположении, что Blue является именованной константой:

AGraphicShape.Color = Blue

В следующеей строке, чтобы задать значение переменной КвадратныйКорень , для текущего значения переменной МоеЛюбимоеЧисло вызывается функция Sqr - встроенная функция VBA вычисления квадратного корня:

КвадратныйКорень = Sqr (МоеЛюбимоеЧисло)

В VBA выражением называется любой фрагмент программного кода, задающий некоторое числовое значение, строку текста или объект. Выражение может содержать любую комбинацию чисел или символов, констант, переменных, свойств объектов, встроенных функций и процедур типа Function, связанных между собой знаками операции (например, + или *). Несколько примеров выражений:

Выполняемые операторы

Выполняемые операторы делают главную работу в программе и используются для выполнения следующих задач:

  • вызов процедуры;
  • активизация метода некоторого объекта;
  • управление порядком, в котором должны выполняться другие операторы, посредством организации циклов или выбором участка программного кода (из нескольких альтернатив) для последующего выполнения;
  • выполнение одного из встроенных операторов VBA или функции.

Пример. Оператор, вызывающий для выполнения метод Rotate объекта AGraphicShape:

AGraphicShape. Rotate(90 )

Запись нескольких операторов

Как правило, каждый оператор занимает одну строку программного кода, но VBA не обязывает уместить оператор в одной строке. Если оператор слишком длинный, можно разместить его в двух или более строках, добавив в конце каждой из строк (кроме последней) символ подчеркивания (_).

Можно сделать и наоборот - разместить несколько операторов в одной строке программного кода. Например,

Dim A As Integer, В As Integer: A = 3 : B = 5 : A = A +B

Эта строка программного кода эквивалентна следующим четырем строкам:

Dim A As Integer , В As Integer A = 3 B = 5 А = А + В

Самыми простыми диалоговыми окнами являются окна сообщений (message boxes) - это диалоговые окна, которые выдают пользователю сообщения и снабжаются одной или более кнопками для выбора. В VBA они создаются с использованием функции MsgBox.

В своей самой простой форме MsgBox используется как оператор с одним аргументом – сообщением, которое должно отображаться. Например, приведенный ниже макрос создаёт сообщение, показанное на рисунке.

Sub Program () MsgBox "Это - окно сообщений" End Sub

MsgBox можно использовать для отображения числового значения.

Sub ShoeValue() Amount = 10 MsgBox Amount End Sub

Переменной Amount присваивается значение 10. На следующей строке для отображения значения Amount используется MsgBox. Вокруг Amount нет кавычек, поскольку это – значение переменной, которое нужно выдать на экран, а не слово "Amount".

Чтобы использовать вместе две отдельные строки в одном окне сообщения, следует использовать операцию конкатенации (&) - объединение.

Sub SayGoodNight() Name = "Саша" MsgBox "Пожелайте доброй ночи " & Name End Sub

Переменной Name присваивается строка "Саша". В строке кода с MsgBox задаётся текстовая строка "Пожелайте доброй ночи ", за которой следует & Name , указывая MsgBox присоединить значение переменной Name к предыдущей текстовой строке.

Опции MsgBox

необязательные аргументы, например, для того, чтобы вставить значок или изменить заголовок (title).

MsgBox "Это - замечательное окно сообщений" , _vbExclamation, "Персональное окно"

Существует четыре значка для окон сообщений. Каждый имеет определённое числовое значение, которое должно передаваться в качестве аргумента MsgBox. Однако вместо числа можно использовать константы со специальными именами, встроенные в VBA.

Таблица 1

Значки окна сообщений MsgBox

Отображение

Константа

Когда используется

для сообщения, не требующего ответа

для того, чтобы задать вопрос

для выдачи важной информации

для предупреждения

MsgBox как функция

MsgBox является функцией и может возвращать значение, соответствующее той кнопке, которую нажимает пользователь. Одной из имеющихся опций окна сообщения является изменение кнопок, которое оно отображает. Вот окно сообщений, которое появляется, когда осуществляется выход из Excel, имея не сохраненные изменения в документе. Это окно имеет три кнопки.

После выбора соответствующей кнопки Excel получает информацию о том, какую кнопку выбрали.

Общий формат для функции MsgBox:

MsgBox(prompt [ , buttons] [ , title] )

где prompt - единственный обязательный аргумент. Для окна сообщений следует задавать текстовую строку с информацией. если вы хотите изменить заголовок, появляющийся в верхней части окна, задайте для заголовка (title ) текстовую строку. По умолчанию используется заголовок Microsoft Excel.

Таблица 2 Комбинации кнопок MsgBox

Отображение

Константа

Когда используется

vbOKOnly

Когда не требуется от пользователя принятия решения

vbOKCancel

Когда окно сообщений объясняет возможное действие. Позволяет пользователю сделать выбор с помощью кнопки Отмена

vbYesNo

Альтернатива константе vbOKCancel , когда кажется, что это сделает окно сообщений более понятным

vbYesNoCancel

Для таких ситуаций, как выход или закрытие файлов без сохранения (подобно ситуации, показанной на рисунке выше)

vbAbortRetryIgnore
vbRetryCancel

При ответе на сообщения об ошибках диска или файла

Если не указывать, какие кнопки необходимо отображать в окне сообщений, то используется значение по умолчанию, соответствующее кнопке Оk .

Примеры решения задач

Приведем несколько примеров решения задач на VBA.

Пример 1. Вычислить значение выражения a равного

При x = 3, y = 2.5

Решение.

Sub выражение1 () Dim A, x, y x = 3 y = 2.5 A = 2 * x - 3 * y MsgBox (A) End Sub

Пояснение решения.

В строке Dim A, x, y объявляются переменные A, x, y .

Пример 2.

Пример 2. Вычислить значение выражения a равного

При x = 3, y = 2.5

Замечание: значения x и y вводит пользователь.

Решение.

Sub выражение2 () Dim A, x, y As Double x = InputBox("Введите x=" ) y = InputBox("Введите y=" ) A = 2 * x - 3 * y MsgBox (A) End Sub

Пояснение решения.

В строке Dim A, x, y As Double описываются переменные A, x, y как числа двойной точности.

При использовании строки

X = InputBox("Введите x=" )

появиться окно

Пример 3

Пример 3. Вычислить значение выражения a равного

При x = 3, y = 2.5

Замечание: значения x и y вводит пользователь, ответ выводится в виде «a = <значение>».

Решение.

Sub выражение3 () Dim A, x, y As Double Dim ответ As String x = InputBox("Введите x=" ) y = InputBox("Введите y=" ) A = 2 * x - 3 * y ответ = "a=" + Str(A) MsgBox (ответ) End Sub

Пояснение решения.

В строке Dim ответ As String описывается переменная ответ как строковая.

Код Str(A) преобразует значение переменной A в строку.

Пример 4

Пример 4. Вычислить значения выражений при x = 3, y = 2.5

Решение.

Sub выражение4 () Dim A, b, c, d, a1, x, y As Double x = InputBox("Введите x=" ) y = InputBox("Введите y=" ) A = 2 * x - 3 * y b = (2 * x - 3 * y) / 2 c = (2 * x - 3 * y) / 2 * x d = (2 * x - 3 * y) / (2 * x) a1 = (2 * x - 3 * y) / (2 * x) + (5 - x) / (3 + y) MsgBox ("a=" + Str(A) ) MsgBox ("b=" + Str(b) ) MsgBox ("c=" + Str(c) ) MsgBox ("d=" + Str(d) ) MsgBox ("a1=" + Str(a1) ) End Sub

Пример 5

Пример 5. Выполнить пример 4, другим способом, с помощью вспомогательных переменных.

Решение.

Sub выражение5 () Dim A, b, c, d, a1, a2, b1, c1, c2, x, y As Double x = InputBox("Введите x=" ) y = InputBox("Введите y=" ) A = 2 * x - 3 * y b = (2 * x - 3 * y) / 2 c = (2 * x - 3 * y) / 2 * x d = (2 * x - 3 * y) / (2 * x) a1 = (2 * x - 3 * y) / (2 * x) + (5 - x) / (3 + y) ‘ новое решение b1 = A / 2 c1 = b * x c2 = b / (2 * x) a2 = d + (5 - x) / (3 + y) MsgBox ("a=" + Str(A) ) MsgBox ("b=" + Str(b) ) MsgBox ("c=" + Str(c) ) MsgBox ("d=" + Str(d) ) MsgBox ("a1=" + Str(a1) ) MsgBox ("b1=" + Str(b1) ) MsgBox ("c1=" + Str(c1) ) MsgBox ("c2=" + Str(c2) ) MsgBox ("a2=" + Str(a2) ) End Sub

Пример 6

Пример 6. Вычислить площадь треугольника по трем известным сторонам. Например, a = 3 , b = 4 , c = 5 .

Решение .

Sub Герон1 () Dim A, b, c, p, s As Double A = 3 b = 4 c = 5 p = (A + b + c) / 2 s = Sqr(p * (p - A) * (p - b) * (p - c) ) MsgBox ("s=" + Str(s) ) End Sub

Пояснение решения.

Для решения задачи используется формула Герона.

Пример 7

Пример 7. Вычислить площадь треугольника по трем известным сторонам.

Решение.

Sub Герон2 () Dim A, b, c, p, s As Double A = Val(InputBox("Введите a=" ) ) b = Val(InputBox("Введите b=" ) ) c = Val(InputBox("Введите c=" ) ) p = (A + b + c) / 2 s = Sqr(p * (p - A) * (p - b) * (p - c) ) MsgBox ("s=" + Str(s) ) End Sub

Пояснение решения.

Код Val(InputBox("Введите a=")) преобразует введенное значение через InputBox в число, так как InputBox возвращает строку. Если такого преобразования не сделать, то программа правильно вычислять s не будет.

Пример 8

Пример 8. Вычислить гипотенузу прямоугольного треугольника по двум катетам.

Решение.

Sub гипотенуза() Dim a, b, c, p, s As Double a = Val(InputBox("Введите a=" ) ) b = Val(InputBox("Введите b=" ) ) c = Sqr(a ^ 2 + b ^ 2 ) MsgBox ("c=" + Str(c) ) End Sub

Вывод (передача пользователю) результатов работы программы и других сообщений осуществляется через диалоговое окно сообщений.

Для организации вывода информации используется встроенная функция MsgBox .

Рассмотрим варианты ее применения.

1. y = Sqr(16)

MsgBox y

2. S = 99

MsgBox (“ S= ” & S)

это знак конкатенации амперсанд ;

применяется для объединения нескольких строк в одну

3. a = 5: b = 101

MsgBox ("a=" & a & " " & "b=" & b)

4. MsgBox ("a=" & a & Chr(13) & "b=" & b)

с помощью этой функции вводится символ перехода

на новую строку (преобразует число в символ)

Работа с объектами Excel

Объектная модель Excel представляет собой иерархию объектов, подчиненных одному объекту Application , который соответствует самому приложению Excel. Объектами Excel являются рабочие книги, рабочие листы, диаграммы, диапазоны ячеек, ячейки и т. д.

VBA может программно управлять любым из этих объектов.

Каждый объект обладает набором свойств , методов и событий.

Свойство – это характеристика или параметр объекта.

Метод – это действие, которое может выполнять объект.

Событие – это действие, на которое объект реагирует автоматически.

Управлять объектом в VBA можно 3 путями:

    изменяя свойства объекта;

    активизируя метод, связанный с объектом;

    определяя процедуру, запуск которой произойдет как отклик на событие.

Вывод информации в ячейку Excel

Ячейка как объект Excel в VBA-программе обозначается Cells(i, j) , где i – номер строки, j – номер столбца электронной таблицы.

Y

Значение Y будет выведено на активный лист рабочей книги Excel в ячейку B 3

= 0.01

Cells(3, 2) = Y

С

Переменной B будет присвоено значение,

которое хранится в ячейке С5

(т. е. содержимое ячейки С5 )

читывание информации из ячейки Excel

B = Cells(5, 3)

Средство vba для ввода информации

Ввод информации от пользователя осуществляется через диалоговое окно ввода. Реализуется с помощью встроенной функции InputBox .

Dim x As Single

x= Val (InputBox ("Введите x"))

Функция InputBox возвращает последовательность символов, введенную в поле ввода (15 ) как данные типа String (строковый). Встроенная функция Val() преобразует строковое значение из поля ввода в числовое.

Линейные вычислительные процессы

Линейный алгоритм характеризуется строгой последовательностью реализации блоков в порядке их расположения в схеме – сверху – вниз. Условные блоки отсутствуют. Каждый блок выполняется однократно.

Пример 1 Вычислить значение функции

при k = 33,5 x = 17

1. Составим алгоритм решения задачи.

2. В окне редактора кода введем программный код:

Option Explicit

Sub Линейный_процесс ()

Dim k As Single, x As Single, y As Single ‘объявление переменных

x = Val (InputBox ("Введите значение x"))

y = k * Exp(Sin(x))

MsgBox "y=" & y ‘ вывод результата в диалоговое окно

End Sub

Команда Option Explicit обязывает объявлять все переменные в данной программе. Может размещаться только в разделе объявлений модуля.

В VBA ввод и вывод информации (для взаимодействия с пользователем) можно осуществлять в диалоговых окнах. Диалоговое окно ввода значений реализуется встроенной функцией InputBox. В окне ввода, реализованное функцией InputBox, отображается поле для ввода значения переменной, в которое пользователь должен ввести определенное значение. Далее пользователь должен нажать кнопку ОК.

Функция InputBox() имеет следующий синтаксис:

Имя_Переменной = InputBox(Prompt, , , , , , )

Где аргументы: Prompt или Сообщение - обязательный аргумент, который задает в диалоговом окне информационное сообщение. Все остальные аргументы являются необязательными. Title задает заголовок окна. На рис 1 приведен модуль, в котором применена функция InputBox.


Рис. 1.

После выполнения модуля 2 появляется окно сообщения "Ввод значений переменных" (рис.2), в котором нужно ввести число и нажать кнопку ОК. В окне диалога (Рис.2), реализованном функцией InputBox (рис 1), отображаются: Заголовок окна - Ввод значений переменных; Сообщение - Введите число; Кнопки (по умолчанию) - ОК и Cancel; Поле предназначенное для ввода значений переменной.


Рис. 2.

Для вывода информации применяются диалоговые окна сообщений, реализуемые оператором MsgBox или функцией MsgBox() . MsgBox может использоваться как оператор. Оператор MsgBox осуществляет вывод информации в диалоговом окне и устанавливает режим ожидания нажатия кнопки пользователем.

Оператор MsgBox имеет следующий синтаксис:
MsgBox Prompt, , , ,

Где аргументы: Prompt или Сообщение - обязательный аргумент, задающий в окне выводимое информационное сообщение. Все остальные аргументы являются необязательными. Buttons - Кнопки, которые можно использовать в диалоговом окне вывода сообщений. В окне сообщений могут применяться различные кнопки (ОК, Отмена и т.д.). Если не указывать, какие кнопки необходимо отображать в окне сообщений, то по умолчанию отображается кнопка ОК. Кроме того, в диалоговых окнах вывода сообщений можно использовать различные значки (vbQuestion - значок вопросительного знака, vbExclamation - значок восклицательного знака и т.д.).

Модуль, в котором MsgBox используется как оператор, приведен на рис. 3 (оператор MsgBox "3", vbOKCancel, "Вывод значений").



Рис. 3

При запуске модуля 4 на исполнение отображается окно сообщений "Вывод значений" (рис. 4), в котором необходимо нажать кнопку ОК. В окне (Рис.4), реализованном оператором MsgBox (Рис. 3), отображаются: Заголовок окна - Вывод значений; Сообщение - 3; Кнопки - ОК и Отмена.


Рис. 4

Например, для вычисления функции типа y = 5 x 2 + 7 x + 9, можно использовать функцию InputBox и оператор MsgBox (рис. 5)



Рис. 5

После выполнения модуля 5 отображается окно ввода


Рис. 6

После ввода числа, например 789, и щелчка на кнопке ОК, появляется окно сообщения, в котором отображается результат вычисления функции у = 5 x 2 + 7 x + 9.


Рис. 7

MsgBox можно использовать в качестве функции. Функция MsgBox() имеет следующий синтаксис: MsgBox (Prompt, , , , ). В этом случае в окне диалога используют несколько различных кнопок. При нажатии кнопки в окне диалога функция MsgBox() возвращает значение типа Integer, которое зависит от того, какая из кнопок была нажата в диалоговом окне вывода сообщений.

Условный оператор в VBA.

Часто необходимо, чтобы часть программы выполнялась бы только при выполнении определенных условий. Решение данной проблемы заключается в использовании специальных конструкций, использующих операторы ветвления.

Общий вид данной конструкции:

If <логическое выражение> Then <список операторов> End If

<логическое выражение> - это простое или сложное условие, или логическая константа (true или folse)

Сложное условие состоит из простых условий, соединенных логическими операциями AND или OR

Например: (а=b)

Алгоритм

2)Если значение логического выражения true, то выполняется список операторов

3)Если значение логического выражения folse, то ничего не выполняется

Дополнительная ветвь условного перехода:

If <логическое выражение> Then

<список операторов1>

<список операторов2>

Алгоритм

1)Вычисляется значение логического выражения

2)Если значение логического выражения true, то выполняется список операторов 1

3)Если значение логического выражения folse, то выполняется список операторов 2

Несколько вложенных друг в друга операторов:

If <логическое выражение1> Then

<список операторов1>

ElseIf <логическое выражение2> Then

<список операторов2>

ElseIf <логическое выражениеN> Then

<список операторовN>

Алгоритм

1)Вычисляется значение логического выражения 1

2)Если значение логического выражения 1 - true, то выполняется список операторов 1

3)Если значение логического выражения 1 - folse, то выполняется список операторов 2

4)Если значение логического выражения 2 - true, то выполняется список операторов 2

5)Если значение логического выражения 2 - folse, то выполняется список операторов 3

4)Если значение логического выражения N - true, то выполняется список операторов N

5)Если значение логического выражения N - folse, то ничего не выполняется

a = inputbox("введите A")

Cells – свойство позволяющее обращаться к конкретным ячейкам рабочего листа.

Cells(i,j) – ячейка и ее координаты – номер строки и номер столбца.

Например:

Cells(1,1) – обращение к ячейке A1

Чтобы поместить значение или формулу в ячейку:

Cells(2,2)=2 – в ячейку В2 поместить значение 2.

Cells(2,2).Value =2 в ячейку В2 поместить значение 2.

Cells(3,1) = a+b - в ячейку С1 поместить формулу суммы чисел a и b.



Cells(3,2) = cells(1,1).value + cells(1,2).value – в ячейку С2 поместить формулу суммы значений из ячеек А1 и А2.

Cells(i,j) = InputBox(“”) – в ячейку будет помещаться значение, которое мы введем в окошке inputbox.

Cells(i,j).Select – выделить конкретную ячейку

Cells.Select – выделить все ячейки на рабочем листе.

Cells(i,j).Activate – сделать ячейку активной.

Чтобы вывести значение находящееся в ячейке на экран:

Cells(1,1) =3 – в ячейку A1 помещаем значение 3.

Msgbox(cells(1,1)) – значение из ячейки выводится на экран.

Cells(1,1) = к+2 – в ячейку A1 помещаем формулу к+2, где к – заданное число

Msgbox(cells(1,1)) – результат вычисленной формулы, хранящийся в ячейке A1 выводится на экран.

MsgBox() - Выводит на экран окно сообщения (Message Box), и возвращает значение, в зависимости от того, какую кнопку нажал пользователь. Может служить для вывода результатов расчета на экран в виде сообщения.

MsgBox (prompt, buttons, title, helpfile, context)

MsgBox (подсказка, кнопки, заголовок, файл справки, контекст)

prompt (подсказка) – выводимое на экране сообщение.

buttons (кнопки) – константа, определяющая, какие кнопки будут содержаться в данном диалоговом окне.

title (заголовок) – заголовок диалогового окна.

helpfile (файл справки) – имя справочного файла.

context (контекст) – контекст для контекстно-зависимой справки, описывается в том случае, если есть helpfile.

InputBox - функция ввода исходных данных. Выводит диалоговое окно с сообщением и поле для ввода текста пользователя.