Функции ввода-вывода данных и сообщений




Ввод-вывод данных и сообщений относится к наиболее часто используемым инструкциям. Встроенные функции VBA обеспечивают ввод-вывод сообщений или данных в интерактивном режиме работы приложения.

Функция MsgBox

Функция MsgBox выводит диалоговое окно, содержащее сообщение пользователю. Осуществляется вывод сообщения и значения переменной, свойства объекта; предлагается на выбор нажатие одной из кнопок, код которой запоминается.

Синтаксис функции MsgBox:

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

prompt — обязательный параметр, строка текста, выводимая в качестве сообщения пользователю, максимальная длина текста — 1024 символа; для разделения строк можно вставлять аналог символов-разделителей Chr(13) — перевод каретки, Chr(10) – заполнитель строки или их комбинации;

buttons – числовой эквивалент типа кнопки, графического значка окна, а также кнопки, используемой по умолчанию. Задается как сумма числовых значений элементов (табл. 13.4);

title – текст заголовка диалогового окна;

helpfile – имя файла справки;

context – число, определяющее номер соответствующего раздела справочной системы.

Функция MsgBox с двумя и более аргументами используется только в выражениях. Если какие-либо аргументы функции отсутствуют, ставятся запятые.

Таблица 13.4

Кнопка Значение Описание
VbOKOnly   Кнопка OK
V bOKCancel   Кнопки OK, Отмена
Продолжение таблицы 13.4
vbAbortRetryIgnore   Кнопки Стоп, Повтор, Пропустить
VbYesNoCancel   Кнопки Да, Нет, Отмена
VbYesNo   Кнопка Да, Нет
VbRetryCancel   Кнопка Повтор, Отмена
VbCritical   Кнопка ОК и значок критического сообщения
VbQuestion   Кнопка ОК и значок предупреждения (вопроса)
vbExclamation   Кнопка ОК и значок восклицания
vbInformation   Кнопка ОК и значок информационного сообщения
vbDefaultButton1   Выбор первой кнопки по умолчанию
vbDefaultButton2   Выбор второй кнопки по умолчанию
vbDefaultButton3   Выбор третьей кнопки по умолчанию
vbDefaultButton4   Выбор четвертой кнопки по умолчанию
vbApplicationModal   Модальное окно, пользователь должен ответить на сообщение для продолжения работы
vbSystemModal   Системное модальное окно, приостановка всех приложений до получения ответа от пользователя
vbMsgBoxHelpButton   Кнопка Справки
VbMsgBoxSetForeground   Выводит окно сообщений
vbMsgBoxRight   Текст выровнен вправо
vbMsgBoxRtlReading   Вывод текста справа налево

 

14. Операторы вывода данных

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примеры:

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

Cells(1, 2) = x ‘Вывод в ячейку B1 текущего значения переменной 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 использовать не рекомендуется.

15. Операторы ввода данных

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

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

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

Примеры:

A = 3

TOK = 480

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

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.

16. Условный оператор If…End If

 

 

17. Условный оператор If…Else…ElseIf…End If

 

18. Условный оператор Select Case… End Select

 

 

 

 

 

19. Оператор цикла For…Next

Синтаксис оператора:

For Счетчик = Начало Тo Конец [ Step Шаг ]

Блок_Операторов

Next Счетчик

Здесь обозначено:

For – для(обязательное ключевое словоVB);

To – до(обязательное ключевое словоVB);

Блок_Операторов – один или несколько операторов, называемых телом цикла;

Счетчик – целая переменная, которая считает количество выполняемых циклов;

Начало, Конец – начальное и конечное значения счетчика;

Step – шаг (ключевое словоVB);

Шаг – шаг изменения счетчика; может быть и отрицательным; параметр необязательный, так как если шаг равен 1, можноStep Шаг опустить;

Next– следующий (обязательное ключевое словоVB, конец записи оператора цикла).

Значение счетчика (Начало, Конец) могут бытьчисленными константами или переменными целого или вещественного типа, могут быть отрицательными или положительными числами. Чтобы тело цикла выполнилось хотя бы один раз, должно быть Начало ≤ Конец, если Шаг > 0, и Начало ≥ Конец, если Шаг < 0.Как только окажется, что Счетчик > Конец ( если Начало < Конец), выполнение цикла заканчивается. Если Начало =Конец, цикл выполнится один раз;

20. Оператор цикла For Each…Next

Ключевым различием в использовании For Each…Next и For…Next является то, что в циклеFor Each…Next не требуется указывать число повторений. В операторе For Each(для каждого элемента в группе) с помощью переменной элемент определяется тип объекта в семействе, а с помощью аргумента группа задается семейство, с которым нужно работать.

Структура представляет множество операторов, относящихся ко всем объектам в некотором семействе (как и структура цикла Do…Loop), но она проще в использовании.

Синтаксис циклаFor Each… Next:

For Each элемент In группа

(операторы, выполняемые при каждом проходе цикла)

Next элемент

21. Оператор цикла Do While…loop/Do…Loop While

Операторы цикла Do…Loop

Циклы Do…Loop– это циклы с условием. Существуют два типа циклов с условием: цикл с предусловием и цикл с постусловием.

Синтаксис цикла с предусловием:

Do While | Until Условие

Операторы – тело цикла

Loop

Синтаксис цикла с постусловием:

Do

Операторы – тело цикла

Loop While | Until Условие

В этих выражениях:

Do–выполнить, ключевое слово, обозначающее начало цикла;

Loop–петля, ключевое слово, означает возврат к началу цикла;

While – пока; с этим ключевым словом операторы цикла будут выполняться пока Условие истинно (True), т. е. пока условие выполняется. При первом невыполнении условия цикл прекращается и выполняется строка кода, следующая после Loop;

Until – до, пока не; с этим ключевым словом операторы цикла будут циклически выполняться при невыполнении Условия (False). При первом выполнении условия (True) цикл прекращается, и выполняется строка кода, следующая послеLoop. Перед Условием используется одно из ключевых слов: While или Until.

Условие – логическое выражение, принимающее одно из двух значений –True, если условие выполняется или False, если условие не выполняется; проверяется после каждого выполнения цикла.

Цикл с предусловием может ни разу не выполниться, если при первом же выполнении цикла с While условие не выполнится, а в цикле с Until, наоборот, выполнится.

22. Одномерные массивы в VBA

Объявление одномерных (линейных) статических массивов в VBA Excel:

  Public Massiv1(9) As Integer Dim Massiv2(1 To 9) As String

В первом случае публичный массив содержит 10 элементов от 0 до 9 (нижний индекс по умолчанию - 0, верхний индекс - 9), а во втором случае локальный массив содержит 9 элементов от 1 до 9.

По умолчанию VBA Excel считает в массивах нижним индексом нуль, но, при желании, можно сделать нижним индексом по умолчанию единицу, добавив в самом начале модуля объявление «Option Base 1». Вместо верхнего индекса можно использовать переменную.

23. Многомерные массивы в VBA

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

  'Массив двухмерный Public Massiv1(3, 6) As Integer 'Массив трехмерный Dim Massiv2(1 To 6, 1 To 8, 1 To 5) As String 'Массив четырехмерный Dim Massiv3(9, 9, 9, 9) As Date

Третий массив состоит из 10000 элементов - 10×10×10×10.

24. Массивы переменной размерности

-0- L

Error

 

25. Комбинированный список ComboBox

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

Свойство Style задаёт внешний вид комбинированного списка (по умолчанию оно равно 0 - элемент ComboBox отображается в виде текстового поля со стрелкой справа, позволяющей развернуть весь список и выбрать требуемое значение). Если Style = 1, то постоянно отображается весь список (или список с полосой прокрутки).

Основные свойства ComboBox

Название Описание
List Содержит в виде массива список имеющихся элементов, нумерация которых начинается с 0.
ListIndex Возвращает порядковый номер выбранного значения из списка (если значение было введено пользователем в текстовом поле, то в этом случае ListIndex = -1)
ListCount Определяет количество элементов в ComboBox..
NewIndex Содержит индекс последнего добавленного в список значения (используется при установке Sorted = True).
Sorted Представляет собой логическое значение, определяющее, отсортирован ли список (True, False).
Style Определяет внешний вид комбинированного списка: 0 - Dropdown Combo (раскрывающийся комбинированный список); 1 - Simple Combo (простой комбинированный список); 2 - Dropdown List (раскрывающийся список).
Text Содержит значение, введённое пользователем в текстовом поле или элемент, выбранный в комбинированном окне.

Методы ComboBox

AddItem Добавляет указанный элемент в определенное место списка.
Clear Удаляет все имеющиеся значения списка.
RemoveItem Удаляет элемент с указанным порядковым номером.

Для добавления нового элемента в список используется метод AddItem.

Пример: Combo1.AddItem “Пение” - добавить в список Combo1 слово Пение.

Добавляемые в список элементы имеют тип String; [index] - порядковый номер в списке, под которым будет находиться новый элемент (необязательный параметр).

Добавить элементы в комбинированный список можно также на этапе разработки с помощью свойства List. Для добавления очередного элемента в список нужно ввести этот элемент в свойстве List и нажать комбинацию клавиш Ctrl + Enter.

 

 

26. Комбинированный список ListBox

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

В отличие от ComboBox список ListBox можно создать многоколончатым и осуществлять выбор нескольких элементов одновременно.

Свойство MultiSelect позволяет задать режим множественного выбора элементов в списке. В режиме MultiSelect = 1 добавление элемента в выделенную группу или исключение из нее осуществляется с помощью щелчка мыши или нажатия пробела. Если MultiSelect = 2, то в этом случае выделение элементов выполняется по аналогии с программой Проводник:

  • щелчок мыши при нажатой клавише Shift позволяет выделить несколько подряд расположенных элементов;
  • щелчок мыши при нажатой клавише Ctrl даёт возможность выделять группу несмежных элементов списка.


Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-06-03 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: