Vba вывод сообщения на экран время. Средство vba для вывода информации
Использование функции MsgBox в VBA Excel, ее синтаксис и параметры. Значения, возвращаемые функцией MsgBox. Примеры использования.
Функция MsgBox предназначена в VBA Excel для вывода сообщения в диалоговом окне, ожидания нажатия кнопки и возврата значения типа Integer, указывающего на то, какая кнопка была нажата. Для упрощения восприятия информации, в этой статье не рассматриваются параметры, связанные с контекстной справкой и модальностью диалогового окна MsgBox.
Синтаксис функции
MsgBox (Prompt [, Buttons ] [, Title ])
Обязательным параметром функции MsgBox является Prompt , если Buttons иTitle явно не указаны, используются их значения по умолчанию. Кроме того, если необязательные параметры не указаны и возвращаемое значение не присваивается переменной, сообщение не заключается в скобки:
Пример 1
Sub Test1() MsgBox "Очень важное сообщение!" End Sub
Параметры функции
*Максимальная длина параметра Prompt составляет примерно 1024 знака и зависит от их ширины.
**В Excel по умолчанию в заголовке MsgBox выводится надпись «Microsoft Excel».
Константы параметра «Buttons»
Тип и количество кнопок
Константа | Описание | Значение |
vbOKOnly | Отображается только кнопка OK. | 0 |
vbOKCancel | Отображаются кнопки OK и Cancel (Отмена). | 1 |
vbAbortRetryIgnore | Отображаются кнопки Abort (Прервать), Retry (Повторить) и Ignore (Пропустить). | 2 |
vbYesNoCancel | Отображаются кнопки Yes (Да), No (Нет) и Cancel (Отмена). | 3 |
vbYesNo | Отображаются кнопки Yes (Да) и No (Нет). | 4 |
vbRetryCancel | Отображаются кнопки Retry (Повторить) и Cancel (Отмена). | 5 |
Стиль значка
Константа | Описание | Значение |
vbCritical | Отображается значок Critical - Критичное сообщение, сообщение об ошибке. | 16 |
vbQuestion | Отображается значок Question - Сообщение с вопросом. | 32 |
vbExclamation | Отображается значок Exclamation - Предупреждающее сообщение. | 48 |
vbInformation | Отображается значок Information - Информационное сообщение. | 64 |
Для просмотра отображаемых значков, скопируйте код в свой модуль и запустите на выполнение:
Пример 2
Sub Test2() Dim a As Integer a = MsgBox("Критичное сообщение, сообщение об ошибке", 16) a = MsgBox("Сообщение с вопросом", 32) a = MsgBox("Предупреждающее сообщение", 48) a = MsgBox("Информационное сообщение", 64) End Sub
Кнопка по умолчанию
Возвращаемые значения
Константа | Кнопка | Значение |
vbOK | OK | 1 |
vbCancel | Отмена | 2 |
vbAbort | Прервать | 3 |
vbRetry | Повторить | 4 |
vbIgnore | Пропустить | 5 |
vbYes | Да | 6 |
vbNo | Нет | 7 |
Значение, возвращаемое функцией MsgBox, используется для выбора дальнейших действий исполняемой программы в зависимости от нажатой кнопки.
Для третьего примера зададим следующие параметры первой функции MsgBox:
- Prompt = «Выберите кнопку!»
- Buttons = 323 (3 (vbYesNoCancel) + 64 (vbInformation) + 256 (vbDefaultButton2))
- Title = «Выбор кнопки»
Вторая функция MsgBox используется как простое информационное сообщение с параметрами по умолчанию.
Пример 3
Sub Test3() Dim a As Integer a = MsgBox("Выберите кнопку!", 323, "Выбор кнопки") If a = 6 Then MsgBox "Вы нажали кнопку: Да" ElseIf a = 7 Then MsgBox "Вы нажали кнопку: Нет" Else MsgBox "Вы нажали кнопку: Отмена" End If End Sub
В этом примере, в зависимости от нажатой кнопки в первом диалоговом окне, во втором сообщении выводится название нажатой кнопки. Обратите внимание, что вторая кнопка в открывшемся первом окне MsgBox выделена по умолчанию и срабатывает при нажатии клавиши «Enter».
А что будет, если первое диалоговое окно из третьего примера закрыть крестиком? Проверьте сами.
Осуществляется с помощью встроенных функций 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
Вывод (передача пользователю) результатов работы программы и других сообщений осуществляется через диалоговое окно сообщений.
Для организации вывода информации используется встроенная функция 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 обязывает объявлять все переменные в данной программе. Может размещаться только в разделе объявлений модуля.
Метод Cells делает указанную ячейку активной. Синтаксис метода следующий:
Cells[(N строки, N столбца)]
N строки - номер строки текущего листа Excel,
N столбца – номер столбца текущего листа Excel (при обращении к этому методу столбцы нумеруются).
В данном варианте синтаксиса предполагается, что на активном листе Excel ячейка, находящаяся на пересечении N строки и N столбца, становится активной.
С помощью метода Cells можно сделать активной ячейку, чтобы затем вводить или выводить данные.
Если с помощью этого метода осуществляется ввод данных из ячейки рабочего листа в переменную, то Cells стоит в правой части оператора присваивания, а если осуществляется вывод из переменной в ячейку рабочего листа, то Cells стоит в левой его части.
Структура ввода , с использованием метода Cells следующая:
<
имя
>=Cells (
< имя > - простая переменная или элемент массива.
Структура вывода с использованием метода Cells следующая:
Cells(
< выражение > - любое выводимое значение.
Рассмотрим, пример следующей программы:
Sub ввод_ввывод_Cells()
Cells(5, 1) = "c="
До запуска этого макроса рабочий лист Excel имел вид (см. рис. 13):
А после запуска макроса он выглядит так (см. рис. 14):
Управляющие структуры VBA. Условный оператор. Оператор безусловного перехода
Управляющие структуры позволяют управлять последовательностью выполнения программы. Без операторов управления все операторы программы будут выполняться слева направо и сверху вниз. Рассмотрим одну из управляющих структур VBA – условный оператор .
Условный оператор применяется, когда необходимо выполнить один или группу операторов в зависимости от значения некоторого условия.
Синтаксис условного оператора:
Короткая форма Þ If <условие> Then <оператор>
If < условие > Then
< оператор > /< Группа операторов 1 >
Полная форма ÞIf < условие > Then
< оператор 1 > / < Группа операторов 1 >
< оператор 2> < Группа операторов 2 >
В блок схеме условный оператор изображается так:
Обычно условие является простым сравнением, но оно может быть любым выражением с вычисляемым значением. Это значение интерпретируется как False (Ложь), если оно нулевое, а любое ненулевое рассматривается как True (Истина). Если условие истинно, то выполняются все выражения, стоящие после ключевого слова Then . Если условие ложно, то выполняются все выражения, стоящие после ключевого слова Else .
Допускаются многократно вложенные конструкции, имеющие столько уровней вложения сколько необходимо.
Рассмотри еще одну управляющую структуру - оператор безусловного перехода . Его синтаксис:
GoTo метка ,
где метка – это любая комбинация символов.
Этот оператор принудительно изменяет последовательность выполнения программы. Оператор GoTo передает управление оператору с меткой, т.е. следующим за оператором GoTo будет выполняется оператор, указанный с помощью метки.
Управляющие структуры VBA. Операторы цикла.
Иногда требуется многократно выполнять некоторый набор инструкций автоматически, либо решить задачу по-другому в зависимости от значения переменных или параметров, заданных пользователем во время выполнения. Для этого служат условный оператор и операторы циклы.
Рассмотрим операторы цикла VBA. Цикл с известным числом повторений (цикл с параметром) реализован в VBA с помощью оператора For Next следующей структуры:
For <параметр цикла>= <начальное значение> To <конечное значение>
<операторы VBA>
Next <параметр цикла>
<параметр цикла> – имя (идентификатор) параметра цикла;
<начальное значение> – начальное значение параметра цикла;
<конечное значение> – конечное значение параметра цикла;
<шаг> – шаг изменения параметра цикла (необязательный параметр, если он отсутствует, шаг изменения равен 1);
<операторы VBA>
В блок-схеме этот оператор изображается так:
В теле этого цикла можно использовать оператор Exit For , с помощью которого можно завершить цикл For Next до того, как параметр примет свое конечное значение.
Циклы с неизвестным числом повторений реализуются на VBA с помощью операторов Do While … Loop, Do Until … Loop, Do … Loop While, Do … Loop Until .
Рассмотрим структуру оператора Do While … Loop.
Do While <условие>
<операторы VBA>
Здесь <условие> – логическое выражение;
<операторы VBA> - операторы VBA, реализующие тело цикла.
<условие>, если <условие> принимает значение Истина(True), то выполняются операторы до служебного слова Loop. Затем вновь проверяется условие, и так продолжается до тех пор, пока условие не станет ложным(False).
Рассмотрим структуру оператора Do Until … Loop.
Do Until <условие>
<операторы VBA>
Оператор выполняется следующим образом. Проверяется <условие>, если <условие> принимает значение Ложь(False), то выполняются операторы до служебного слова Loop. Затем вновь проверяется условие, и так продолжается до тех пор, пока условие не станет истинным (True).
В блок схеме этот оператор изображается так:
Мы рассмотрели операторы цикла, которые реализуют цикл с предусловием.
Рассмотрим, операторы цикла, которые реализуют цикл с постусловием. Это операторы Do … Loop While и Do … Loop Until. Структура этих операторов следующая:
<операторы VBA>
Loop Until <условие>
<условие>, если <условие> принимает значение Ложь(False), то опять выполняются операторы до служебного слова Loop. Так продолжается до тех пор, пока <условие> не станет истинным (True).
В блок схеме этот оператор изображается так:
<операторы VBA>
Loop While <условие>
Оператор выполняется следующим образом. Выполняются операторы до служебного слова Loop. Затем проверяется <условие>, если <условие> принимает значение Истина(True), то опять выполняются операторы до служебного слова Loop. Так продолжается до тех пор, пока <условие> не станет ложным (False).
В блок схеме этот оператор изображается так:
В VBA существует оператор, позволяющий осуществить досрочный выход из циклов с неизвестным числом повторений. Для выхода из этих циклов нужно использовать оператор Exit Do .
Лекция для ЗФ
ОПЕРАТОРЫ ВВОДА И ВЫВОДА ДАННЫХ.
ЛИНЕЙНЫЕ ВЫЧИСЛИТЕЛЬНЫЕ ПРОЦЕССЫ
ОПЕРАТОР ПРИСВАИВАНИЯ 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 ‘Конец процедуры
Ниже приведено решение того же примера с использованием других способов ввода и вывода данных.