Для вывода данных в vba используются команды. Вввод-вывод данных в VBA. Синтаксис функции MsgBox
Осуществляется с помощью встроенных функций InputBox, MsgBox, с помощью изменения определенных свойств определенных объектов или применения к ним соответствующих методов.
Ввод данных
Ввод значений переменных может осуществляться:
С помощью функции InputBox , которая при выполнении программы выводит на экран свое собственное окно. Возвращаемое функциейInputBoxзначение имеет типstring. Поэтому для использования введенного значения как числовой переменной необходимо дополнительно преобразовать его к числовому типу с помощью функцииVal. Например, для ввода значения числа 5,25 в переменнуюанеобходимо записать следующую строку программного кода:
a = Val(InputBox("Введите а", "Ввод данных"))
2) С помощью текстового окна TextBox . На форме должно присутствовать текстовое окно, к примеру,Text1, а в событийной процедуре, например, для щелчка по командной кнопке, должен быть записан программный код, в котором используется свойствоtextобъектаText1:
Private Sub Command1_Click()
a = Val(Text1.text)
Свойство textобъектаText1, также имеет строковое значение, поэтому необходимо его преобразование в числовое значение с помощью функцииVal.
Вывод результатов
Для вывода результатов в VB существуют различные способы.
Основным оператором вывода значений переменных в языке VB является оператор Print, который в терминах объектно-ориентированного программирования рассматривается какметод , действующий на объект, на который и будут выводиться значения, указанные в списке. Основными объектами, для которых имеется методPrint, являются формаForm, и графическое окноPictureBox.
Если объект, к которому применяется метод Print, не указан, то список значений выводится на активную форму. Например, после выполнения строки программного кода:
Вывести значение переменной можно с помощью функции MsgBox, которая при выполнении активизирует свое собственное окно сообщений на экране.
Private Sub Command1_Click()
Вывод можно оформить в текстовое окно TextBox, изменяя его свойствоText
Text1.text=str(a)
При этом надо помнить, что свойство Textработает со строкой символов, поэтому выводимое число преобразуется в строку символов с помощью функцииstr.
Вывод можно оформить на метку Label, изменяя ее свойствоCaption:
Label1.Caption=”Результат” & str(a)
Значок & (+) означает сцепление двух строковых переменных.
Функция Format
При выводе результатов для большей наглядности часто используется функция Format, которая возвращает значение типаVariant (String),содержащее выражение, отформатированное согласно инструкциям, заданным в описании формата.
Синтаксис
Format (Expression[, Format[, FirstDayOfWeek[, FirstWeekOfYear]]])
Expression- обязательный аргумент - любое допустимое выражение, подлежащее форматированию.
Format - необязательный аргумент - любое допустимое именованное или определяемое пользователем выражение формата (шаблон формата).
При форматировании чисел без указания шаблона формата функция Format выдает тот же результат, что и функцияStr, т.е. возвращает строку, представляющую число. Отличие состоит в том, что при преобразовании положительного числа с помощью функцииFormatпробел в начале строки (на месте знака числа) теряется, а при преобразовании с помощью функцииStr останется
Примеры шаблонов форматов, применяемых для создания пользовательских форматов числовых величин
Print Format (6.789, "00.0000") " возвратит 06,7890
Print Format (6.789, "##.0000") " возвратит 6,7890
Условный оператор в 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 - функция ввода исходных данных. Выводит диалоговое окно с сообщением и поле для ввода текста пользователя.
В 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 Excel, которое может отображать различную информацию.
Функция MsgBox отображает окно сообщения и ждет, когда пользователь нажмет кнопку, а затем действие будет выполнено на основе кнопки, нажатой пользователем.
Синтаксис
MsgBox(prompt[,buttons][,title][,helpfile,context])
Параметр Описание
- Запрос - обязательный параметр. Строка, отображаемая в виде сообщения в диалоговом окне. Максимальная длина приглашения - около 1024 символов. Если сообщение распространяется более чем на одну строку, то строки могут быть разделены с использованием символа возврата каретки (Chr (13)) или символа перевода строки (Chr (10)) между каждой строкой.
- Кнопки - необязательный параметр. Числовое выражение, которое указывает тип отображаемых кнопок, стиль значка для использования, идентификатор кнопки по умолчанию и модальность окна сообщения. Если оставить пустым, значение по умолчанию для кнопок равно 0.
- Заголовок - необязательный параметр. Строковое выражение отображается в строке заголовка диалогового окна. Если заголовок оставлен пустым, имя приложения помещается в строку заголовка.
- Файл справки - необязательный параметр. Выражение String, которое идентифицирует файл справки, который будет использоваться для предоставления контекстно-зависимой справки для диалогового окна.
- Контекст - необязательный параметр. Числовое выражение, которое идентифицирует номер контекста справки, присвоенный автору справки, в соответствующий раздел справки. Если контекст предоставлен, также должен быть предоставлен справочный файл.
Параметр Buttons может принимать любое из следующих значений:
- 0 vbOKOnly - отображает только кнопку OK.
- 1 vbOKCancel - отображает кнопки «ОК» и «Отмена».
- 2 vbAbortRetryIgnore - отображает кнопки отмены, повтора и игнорирования.
- 3 vbYesNoCancel - отображает кнопки «Да», «Нет» и «Отмена».
- 4 vbYesNo - отображает кнопки «Да» и «Нет».
- 5 vbRetryCancel - отображает кнопки повтора и отмены.
- 16 vbCritical - отображает значок критического сообщения.
- 32 vbQuestion - отображает значок предупреждения.
- 48 vbExclamation - отображает значок предупреждающего сообщения.
- 64 vbИнформация. Отображает значок информационного сообщения.
- 0 vbDefaultButton1 - первая кнопка по умолчанию.
- 256 vbDefaultButton2 - вторая кнопка по умолчанию.
- 512 vbDefaultButton3 - Третья кнопка по умолчанию.
- 768 vbDefaultButton4 - Четвертая кнопка по умолчанию.
- 0 vbApplicationModal Application modal - текущее приложение не будет работать, пока пользователь не ответит на сообщение.
- 4096 vbSystemModal System modal - все приложения не будут работать, пока пользователь не ответит на сообщение.
Вышеуказанные значения логически разделены на четыре группы: первая группа (от 0 до 5) указывает кнопки, которые будут отображаться в окне сообщения. Вторая группа (16, 32, 48, 64) описывает стиль значка, который будет отображаться, в третью группу (0, 256, 512, 768) указывает на то, какая кнопка должна быть по умолчанию, а четвертую группу (0, 4096) определяет модальность окна сообщения.
Возвращаемые значения
Функция MsgBox может возвращать одно из следующих значений, которое может использоваться для идентификации кнопки, которую пользователь нажал в окне сообщения.
- 1 - нажата кнопка vbOK - OK.
- 2 - vbCancel - нажата кнопка Отмена
- 3 - vbAbort - нажата кнопка Abort
- 4 - vbRetry - нажата кнопка Retry
- 5 - vbIgnore - нажата кнопка Ignore
- 6 - vbYes - нажата кнопка «Да»
- 7 - vbNo - Нет щелчка
Sub MessageBox_Demo() "Простое сообщение MsgBox ("Привет") "Сообщение с заголовком и кнопками да, нет и отмена a = MsgBox("Вам нравится синий цвет", 3, "Выберите ответ") "Код нажатой кнопки MsgBox ("Значение ответа " & a) End Sub
MsgBox по шагам
Шаг 1 - Вышеуказанная функция может быть выполнена либо нажатием кнопки «Выполнить» в окне VBA, либо нажатием на кнопку, которую Вы сами добавили на лист Excel.
Шаг 2 - Простой текстовый ящик отображается с сообщением «Добро пожаловать» и кнопкой «ОК»
Вывод (передача пользователю) результатов работы программы и других сообщений осуществляется через диалоговое окно сообщений.
Для организации вывода информации используется встроенная функция 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
Cells(3, 2) = Y
С
Переменной
B
будет
присвоено значение, которое
хранится в ячейке С5
(т.
е. содержимое ячейки С5
)
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 обязывает объявлять все переменные в данной программе. Может размещаться только в разделе объявлений модуля.