Для вывода данных в 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

= 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 обязывает объявлять все переменные в данной программе. Может размещаться только в разделе объявлений модуля.