Для вывода данных в vba используются команды. Окно сообщения в VBA Excel - MsgBox
В 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, которое зависит от того, какая из кнопок была нажата в диалоговом окне вывода сообщений.
" мы вкратце познакомились с диалоговым сообщением msgbox. Но это было простейшее информационное сообщение. Теперь рассмотрим подробнее работу с функцией MsgBox и все виды диалоговых сообщений.
Синтаксис функции MsgBox
Функция MsgBox имеет следующий синтаксис:
MsgBox (сообщение [, константы сообщения] [, заголовок] [, файл справки hlp, контекст справки])
Обязательным параметром является «Сообщение», остальные могут быть опущены.
MsgBox “Текст сообщения ”
- Константы сообщения - позволяют определить вид диалогов.
- Заголовок – задает заголовок формы диалога.
- Файл справки hlp - строковое выражение, указывающее имя файла справки для диалогового окна.
- Контекст справки - числовое выражение, указывающее номер контекста файла справки для диалогового окна.
Диалоговое окно вида:
создается следующей командой:
MsgBox "Текст содержащий вопрос", vbYesNo, "Название сообщения"
Для создания сообщения такого вида:
команда будет выглядеть так:
MsgBox "Текст содержащий вопрос", vbYesNoCancel, "Название сообщения"
Сообщение такого вида:
создается командой:
MsgBox "Текст содержащий вопрос", vbAbortRetryIgnore, "Название сообщения"
т.е. из всех трех примеров в команде меняется только второй параметр (vbYesNo, vbYesNoCancel, vbAbortRetryIgnore). Это и есть значения (константы) определяющие вид сообщения. Параметры (vbYesNo, vbYesNoCancel) могут быть заменены на числовое значение, например диалог vbYesNo можно вызвать, указав 4: MsgBox "Текст содержащий вопрос", 4, "Название сообщения".
Ниже приведен полный список констант и эквивалентных им цифровых значений:
Константа | Значение | Описание |
vbOKOnly | Выводит сообщение с кнопкой OK |
|
vbOKCancel | Выводит сообщение с кнопками OK и Отмена |
|
vbAbortRetryIgnore | Выводит сообщение с кнопками Прервать , Повтор, Пропустить |
|
vbYesNoCancel | Выводит сообщение с кнопками Да , Нет , Отмена . |
|
Выводит сообщение с кнопками Да и Нет |
||
vbRetryCancel | Выводит сообщение с кнопками Повтор и Отмена |
В сообщениях можно слегка изменить внешний вид, назначить кнопку по умолчанию, добавить кнопку "Справка" путем сложения констант.
Например: MsgBox "Текст содержащий вопрос", vbYesNoCancel+vbInformation+ vbMsgBoxHelpButton+vbDefaultButton2, "Название сообщения" построит сообщение вида:
vbInformation
- добавляет иконку восклицания в сообщение
vbMsgBoxHelpButton
- добавляет кнопку "Справка"
vbDefaultButton2
- устанавливает фокус на второй кнопке ("Нет
")
Ниже таблица со списком констант иконок и констант, устанавливающих фокус на кнопках:
Константа | Значение | Описание |
vbCritical | Выводит иконку критического сообщения (красный овал с крестом) |
|
vbQuestion | Выводит иконку с вопросительным знаком |
|
vbExclamation | Выводит иконку с восклицательным знаком (в желтом треугольнике) |
|
vbInformation | Выводит иконку информационного сообщения |
|
vbDefaultButton1 | Устанавливает фокус по умолчанию на первой кнопке |
|
vbDefaultButton2 | Устанавливает фокус по умолчанию на второй кнопке |
|
vbDefaultButton3 | Устанавливает фокус по умолчанию на третьей кнопке |
|
vbDefaultButton4 | Устанавливает фокус по умолчанию на четвертой кнопке |
|
vbMsgBoxHelpButton | Добавляет кнопку Справка |
|
vbMsgBoxRight | Выравнивание текста сообщения по правой стороне |
|
vbMsgBoxRtlReading | Зеркально переворачивает все элементы в сообщении (см. снимок ниже) |
Как узнать какую кнопку в сообщении нажал пользователь?
Определяться выбор пользователя будет с помощью . В некоторых ситуациях можно использовать .
Например, вызовем сообщение двойным нажатием ЛКМ по любой ячейке на листе. В соответствии с выбором пользователя, выведем в эту ячейку текст.
Создаем новую книгу Excel и переходим в режим Visual Basic (Alt+F11). В окне проекта выбираем «Лист1 » и кликаем по нему два раза ЛКМ.
В открывшемся окне редактора кода вводим следующую процедуру:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean ) If
MsgBox("Текст содержащий вопрос", vbYesNo, "Название сообщения") = vbYes Then
|
В условии IF мы сравниваем результат возвращенный функцией MsgBox, с константой vbYes т.е. если в сообщении нажата кнопка «Да », тогда функция MsgBox возвращает значение vbYes (6). Полный перечень констант и их цифровых эквивалентов ниже. Теперь попробуйте на Листе 1 кликнуть два раза по любой ячейке.
Примечание: При вызове сообщения выполнение программы останавливается до тех пор, пока не будет получен ответ от пользователя.
Второй вариант вызова диалога с помощью .
Создадим вторую процедуру на Листе 2. Код процедуры следующий:
Private Sub
Worksheet_BeforeDoubleClick(ByVal
Target As
Range, Cancel As Boolean
) Select Case
mes |
В этом случае результат вызова MsgBox присваивается переменной mes и далее в Select Case ищется совпадение и согласно совпадения, выполняются действия.
Вот и все. Ниже прикреплен готовый пример, рассмотренный в этой статье.
Перечень констант и значений, возвращаемых функцией MsgBox:
Константа | Значение | Кнопка |
vbCancel | Отмена |
|
Прервать |
||
Повтор |
||
vbIgnore | Пропустить |
|
Использование функции 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».
А что будет, если первое диалоговое окно из третьего примера закрыть крестиком? Проверьте сами.
1. Функция InputBox
Функция InputBox имеет следующий синтаксис:
Переменная = InputBox (Приглашение[, Заголовок] [, по_умолчанию] [, Xпоз] [, Yпоз] [, файл_справки, содержание] )
Эта функция требует обязательного задания только аргумента Приглашение Значение аргумента Приглашение – единственный обязательный аргумент этой функции, служит текстовая строка, которая отображается в диалогом окне ввода в качестве сообщения. Этот текст должен быть заключен в двойных кавычках.
Аргумент Заголовок
Аргумент по_умолчанию задает значение, которое отображается по умолчанию в поле ввода, пока пользователь не введет свое значение. Если этот аргумент опустить, то поле ввода отображается пустым.
Необязательные аргументы Xпоз и Yпоз задают положение окна ввода на экране. Аргументы файл_справки и содержание
Возвращаемым значением функции InputBox является значение, введенное пользователем в поле ввода.
2. Функция MsgBox
Окно сообщения создаётся функцией MsgBox, которая имеет следующий синтаксис:
Переменная = MsgBox (Приглашение[, Кнопки] [, Заголовок [, файл_справки, содержание] )
Значение аргумента Приглашение – единственный обязательный аргумент этой функции, служит текстовая строка, которая отображается как сообщение в диалогом окне. Этот текст должен быть заключен в двойных кавычках. Отметим использование круглых скобок в синтаксисе MsgBox – они указывают на то, что в данном случае MsgBox является функцией, возвращающей какое-либо значение. Если скобки опущены, то для VBA это признак того, что данное выражение значение не возвращает. Если Вы хотите возвращать значение, надо использовать код, подобный следующему:
Dim i As Integer
Результатом работы такого кода в VBA будет диалоговое окно с тремя кнопками «Да», «Нет», «Отмена» и с пиктограммой восклицательный знак в желтом треугольнике.
Если не указан аргумент Кнопки , то VBA предлагает только одну кнопку «OK». Аргумент Кнопки позволяет управлять следующими параметрами окна сообщения:
¨ Количеством кнопок в окне.
¨ Типы кнопок и и х размещение в окне.
¨ Пиктограммы, отображаемые в окне.
¨ Какая кнопка назначается по умолчания.
¨ Режим (модальность) окна сообщения.
В табл.1 показаны возможные установки для этого аргумента. Первая группа значений устанавливает число и тип кнопок. Вторая позволяет выбрать пиктограмму, отображаемую в окне. Третья назначает кнопку по умолчанию. Четвертая группа устанавливает режим окна сообщения. Для создания конечного значении аргумента Кнопки можно использовать только одно значение из каждой группы, объединив их значком «плюс».
Группа | Константа | Значение | Описание |
Группа 1 | vbOKOnly | Отображает только кнопку OK (установка по умолчанию) | |
VbOKCancel | Отображает кнопки OK и Отмена | ||
VbAbortRetryIgnore | Отображает кнопки Стоп, Повтор и Пропустить. | ||
VbYesNoCancel | Отображает кнопки Да, Нет и Отмена | ||
vbYesNo | Отображает кнопки Да и Нет | ||
VbRetryCancel | Отображает кнопки Повтор и Отмена | ||
Группа 2 | VbCritical | Отображает запрещающую пиктограмму | |
VbQuestion | |||
VbExclamation | Отображает предупреждающую пиктограмму | ||
VbInformation | Отображает информационную пиктограмму | ||
Группа 3 | VbDefaultButton1 | Первая кнопка – кнопка по умолчанию | |
VbDefaultButton2 | Вторая кнопка – кнопка по умолчанию | ||
VbDefaultButton3 | Третья кнопка – кнопка по умолчанию | ||
VbDefaultButton4 | Четвертая кнопка – кнопка по умолчанию | ||
Группа 4 | VbApplicationModal | Режим приложения: пользователь должен закрыть окно сообщения перед продолжением работы в текущем приложении | |
VbSystemModal | Системный режим: все приложения недоступны, пока пользователь не закроет окно сообщения | ||
Дополнительная группа | vbMsgBoxHelpButton | Отображает кнопку Справка | |
vbMsgBoxSetForeground | Делает окно сообщения окном переднего плана | ||
vbMsgBoxRight | Отображает окно сообщения, выровненным по правому краю окна приложения | ||
vbMsgBoxRtlReading | Для иврита и арабского языка указывает, что текст должен выводиться справа налево. |
Табл. 1. Установки для аргумента Кнопки функции MsgBox
Чтобы не ошибаться при вводе значений аргумента Кнопки , используйте список констант, который появляется после ввода знака «+». Знак «+» используется для объединения нескольких констант при задании сложного аргумента Кнопки.
Аргумент Заголовок используется для задания текста, который помещается в строке заголовка окна ввода. Если этот аргумент не задан, то в строке заголовка отображается Microsoft Excel.
Аргументы файл_справки и содержание используются в том случае, если вы создаете для своего приложения собственную систему справок.
В табл.2 представлен список значений, возвращаемых функциейMsgBox. Возвращаемое значение зависит от нажатой пользователем кнопки.
Возвращаемое значение | Кнопка |
OK | |
Отмена | |
Стоп | |
Повтор | |
Пропустить | |
Да | |
Нет |
Табл. 2. Значения, возвращаемые функцией MsgBox
Наилучший тип Переменной возвращаемой функцией MsgBox является Integer.
Объекты Range и Cells
В VBA ячейки рабочего листа трактуются как объект Range. Это наиболее часто используемый объект.
Объект Range при работе с ячейками использует формат А1.
Формат А1. Ссылка состоит из имени столбца (обозначаются буквами от А до IV, 256 столбцов максимально) и номера строки (от 1 до 65536). Например, А77. Для ссылки на диапазон ячей указываются адреса левой верхней и правой нижней ячейки диапазона, разделенных двоеточием. Например, В10:В20, 7:7 (все ячейки в 7-й строке), 5:10 (все ячейки между 5-й и 10-й строками включительно), D:D (все ячейки в столбце D), H:J (все ячейки между столбцами H и J включительно). Признаком абсолютной ссылки является знак доллара перед именем строки или столбца
Объект Cells при работе с ячейками использует формат R1C1.
Формат R1C1 . В формате R1C1, после буквы «R» указывается номер строки ячейки, после буквы «С» -- номер столбца. Например, абсолютная ссылка R1C1 эквивалентна абсолютной ссылке $A$1 для формата А1. Для задания относительной ссылки указывается смешение по отношению к активной ячейке. Смешение указывается в квадратных скобках. Знак указывает направление смещения. Например, R[-3]С (относительная ссылка на ячейку, расположенную на три строки выше в том же столбце). RС (относительная ссылка на ячейку, расположенную на две строки ниже и на два столбца правее). R2С2 (абсолютная ссылка на ячейку, расположенную во второй строке и во втором столбце). R[-1] (относительная ссылка на строку, расположенную выше текущей ячейки), R (абсолютная ссылка на текущую строку).
Полный адрес ячейки может содержать также имя рабочего и адрес книги. После имени листа ставится знак «!», а адрес книги заключается в квадратные скобки. Например: [Книга1.xls]Лист5!D$2.
В качестве объекта Range и могут выступать:
§ отдельная ячейка;
§ выделенный диапазон ячеек;
§ несколько выделенных диапазонов ячеек (т.е. совокупность несмежных диапазонов);
§ строка и столбец;
§ трехмерный диапазон (т.е. состоящий из диапазонов, расположенных на разных рабочих листах).
Свойства объекта Range и Cells
Свойства | Описание и допустимые значения |
Value | Возвращает значение из ячейки или диапазона (в ячейку или диапазон): X=Range(“A1”).Value Range(“A1”).Value=10 |
Name | Возвращает имя диапазона: Range(“B1:B4”).Name=”Приложение” |
Address | Возвращает текущее положение диапазона |
Count | Возвращает количество ячеек в диапазоне |
Offset | Возвращает величину смещения одного диапазона относительно другого |
Resize | Позволяет изменять текущее выделение диапазона |
CurrentRegion | Возвращает текущий диапазон, содержащий указанную ячейку и ограниченный пустыми строкой и столбцом. |
WrapText | True (False) – разрешает (не разрешает) перенос текста при вводе в диапазон. |
EntireColumn, EntireRow | Возвращает строку и столбец. |
ColumnWidth, RowHeight | Возвращает ширину столбцов и высоту строк диапазона. |
Font | Возвращает объект Font (шрифт). Например: With Worksheets(“Z3”).Range(“F10”).Font .Size=22 .Bold=True .Italic=True End With |
Formula | Формула в формате А1. Например, так можно ввести формулу в ячейку C2: Range(“C2”).Formula=”=$B$2+$A$2” |
FormulaLocal | Формула в формате А1 с учетом языка пользователя (для неанглоязычных версий Excel). Например: Range(“C1”).FormulaR1C1= “=ПИ ()” |
FormulaR1C1 | Формула в формате R1C1. Например, Range(“C1”).FormulaR1C1= “=R1C1+2” |
FormulaR1C1Local | Формула в формате R1C1 с учетом языка пользователя (для неанглоязычных версий Excel). |
HorizontalAlignment | Горизонтальное выравнивание. Возможные значения: xlHAlignGeneral (обычное), xlHAlignCenter (по центру), xlHAlignCenterAcrossSelection (по центру выделения), xlHAlignJustify (по ширине), xlHAlignRight (по правому краю), xlHAlignLeft (по левому краю) и другие. |
VerticalAlignment | Вертикальное выравнивание. Возможные значения: xlVAlignBottom (по нижнему краю), xlVAlignCenter (по центру), xlVAlignTop (по верхнему краю) и другие. |
Методы объекта Range и Cells
Методы | Действия |
Address | Возвращает адрес ячейки. |
AutoFit | Автоматически настраивает ширину столбца и высоту строки. Например: Range(“B1:B3”).Columns.AutoFit Использование свойства Columns или Rows в данном случае необходимо, так как значением диапазона должны быть строки или столбцы, иначе будет выдаваться ошибка. |
Clear | Очищает диапазон. Например: Range(“В1:В20”).Clear |
Copy | Копирует диапазон в другой диапазон или буфер обмена (если параметр Destination не задан). Например, так можно скопировать значения диапазона с одного листа (Л1) на другой (Л2): Worksheets(“З1”).Range(“D1:D5”).Copy Destination:=Worksheets(“P2”).Range(“D5”) |
Cut | Копирует диапазон с удалением (вырезает) в другой диапазон или буфер обмена (если параметр Destination не задан). Например, скопируем диапазон ячеек с удалением в буфер обмена: Worksheets(“Лист1”).Range(“D1:E5”).Cut |
Delete | Удаляет диапазон. Параметр Shift определяет направление сдвига ячеек при удалении. Например: Range(“B6:D6”).Delete Shift:=xlShiftToLeft |
Insert | Вставляет ячейку или диапазон ячеек. Например, так можно вставить строку перед шестой строкой на листе «Лист2»: Worksheets(“Лист2”).Rows(6).Insert |
Select | Выделяет диапазон: Range(“A1:C7”).Select |
Методы объекта Range и Cells, реализующие команды Excel
Методы | Действия |
DataSeries | Создает прогрессию. DataSeries(rowcol,date,step,stop,trend) Вручную метод выполняется с помощью команды Правка\Заполнить\Прогрессия |
AutoFill | Автозаполнение. Автоматически заполняет ячейки диапазона элементами последовательности: Объект(Диапазон, Тип). |
AutoFilter | Автофильтр. Реализует запрос на фильтрацию данных на рабочем листе: Объект.AutoFilter(Поле, Условие1, Оператор, Условие2) Соответствует команде Данные\Фильтр\Автофильтр. |
AdvancedFilter | Расширенный фильтр. Соответствует команде Данные\Фильтр\Расширенный фильтр. |
Consolidate | Объединение данных из нескольких диапазонов в одну итоговую таблицу. Соответствует команде Данные\Консолидация. |
Find | Поиск данных. Вручную вызывается командой Правка\Найти. |
TblGoalSeek | Подбор параметра. Вручную выполняется с помощью команды Сервис\Подбор параметра. |
Sort | Сортировка данных. Вручную выполняется с помощью команды Данные\Сортировка |
Subtotal | Добавляет промежуточные итоги. Вручную вызывается командой Данные\Промежуточные итоги. |
Примечание . Следует особо отметить, что в VBA (в отличие от Excel) операция присваивания выполняется независимо от статуса ячейки и не меняет его. Т.е. для присвоение значения ячейке (или для получения её значения) совсем не обязательно, чтобы эта ячейка была активной (вспомните, что в Excel перед вводом в ячейку её необходимо активизировать), не станет она активной (если до этого не была таковой) и после присвоения ей какого-либо значения.
Вывод (передача пользователю) результатов работы программы и других сообщений осуществляется через диалоговое окно сообщений.
Для организации вывода информации используется встроенная функция 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 обязывает объявлять все переменные в данной программе. Может размещаться только в разделе объявлений модуля.