Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


For Each Элемент In Группа



[Инструкции]

[ Exit For ]

[Инструкции]

Next [Элемент]

Альтернативный способ выхода из цикла предоставляет инструкция Exit For. В данном примере при помощи оператора цикла For Each находится сумма элементов массива.

Пример

Dim A As Variant

A = Array(1, 4, 12, 23, 34, 3, 23)

s = 0

For Each b In A

s = s + b

Next b


Пример. Суммирование значений из выделенного диапазона:

s = О


For Each c In Selection.Cells

s = s + c.Value

Next с

MsgBox s

В следующем примере цикл For Each используется для работы с семейством ячеек. В нем все ячейки диапазона А1:С4 с положительными значениями окрашиваются в в синий цвет, а с неположительными — в красный.

Пример .

For Each Ячейка In Range ("Al :C4") .Cells

With Ячейка

If .Value <= 0 Then

.Interior.Colorlndex = 3

Else

Interior.Colorlndex = 5

End If

End With

Next Ячейка

Оператор While— Wend

Оператор W hile - W end выполняет последовательность инструкций, пока данное условие имеет значение True.

Синтаксис:

While Условие

[Инструкции]

Wend

Оператор повтора W hile - W end в отличие от For - Next работает не заданное число раз, а пока выполняется условие. В следующем примере бросается игральная кость до тех пор, пока не выпадет шесть очков. При выпадении шести очков игра заканчивается, и отображается сообщение с указанием, на каком броске она закончилась.

Пример.

Dim Бросок As Integer

D im Очки As Integer

RandomiZe

Очки = Int (6* Rnd ())+1

Бросок = 1

Whi le Очки < 6

Бросок = Бросок + 1

Очки = Int (6* Rnd ())+1

Wend

MsBox ”Победили на броске ” & Бросок



Оператор Do — Loop

Оператор Do - Loop повторяет выполнение набора инструкций, пока условие имеет значение True (случай while) или пока оно не примет значение True (случай Until).

Синтаксис:

Do [{ While | Until } Условие]

[Инструкции]

[ Exit Do ]

[Инструкции]

Loop

Или

 

Do

[Инструкции]

[ Exit Do ]

[Инструкции]

Loop [{While | Until] Условие]

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

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

" ■ •   ■                                       -

Do

Пароль = InputBox ("Введите пароль")

Loop Until Пароль = "Привет"

Пример . Суммирование всех вводимых чисел

s = О

Do

х = InputBox("Введите число")

If Not IsNumeric(x) Then Exit Do

s = s + x

Loop

Оператор безусловного перехода

Оператор безусловного перехода задает переход на указанную строку внутри процедуры. Обязательный параметр строка может быть любой меткой строки или ее номером.

Синтаксис:

GoTo Строка

Для использования оператора безусловного перехода надо какой-то строке присвоить метку. Метка должна начинаться с буквы и заканчиваться двоеточием.

Процедуры ввод и вывод

В проектах VBA для вода / вывода используются две разновидности диалоговых окон: окна сообщений и окна ввода. Они встроены в VBA и если их возможностей достаточно, то можно обойтись без проектирования диалоговых окон. Окно сообщений (MsgBox ) выводит простейшие сообщения для пользователя, окно ввода (Inputbox ) обеспечивает ввод информации.

Функция   Описание

I nputbox Выводит на экран диалоговое окно, содержащее сообщение и поле ввода, две кнопки ОК и Cancel. Устанавливает режим ожидания ввода текста пользователем и нажатия кнопки, а затем возвращает значение типа String по нажатию на кнопку ОК, содержащее текст, введенный в поле ввода. При нажатии кнопки Cancel возвращает пустую строку ( Empty ).

Синтаксис:

Inputbox ( Prompt [, Title ][, Default ][, xPos ][, yPos ] [, Helpfile , Context ])

· Prompt –строковое выражение, отображаемое как сообщение в диалоговом окне. Строковое выражение Prompt может содержать несколько строк.;

· Title — строковое выражение, отображаемое в строке заголовка диалогового окна. Если этот параметр опущен, то в строку заголовка помещается имя приложения;

· Default — строковое выражение, отображаемое в поле ввода как используемое по умолчанию, если пользователь не введет другую строку. Если этот параметр опущен, то поле ввода изображается пустым;

· xPos — числовое выражение, задающее расстояние по горизонтали между левой границей диалогового окна и левым краем экрана. Если этот параметр опущен, то диалоговое окно выравнивается по центру экрана по горизонтали;

· yPos — числовое выражение, задающее расстояние по вертикали между верхней границей диалогового окна и верхним краем экрана. Если этот параметр опущен, то диалоговое окно помещается по вертикали примерно на одну треть высоты экрана;

· Helpfile — строковое выражение, определяющее имя файла справки, содержащего справочные сведения о данном диалоговом окне. Если этот параметр указан, то необходимо указать также параметр Contex t;

· Context — числовое выражение, определяющее номер соответствующего раздела справочной системы. Если этот параметр указан, то необходимо указать также параметр Helpfile .

MsgBox Выводит на экран диалоговое окно, содержащее сообщение, устанавливает режим ожидания нажатия кнопки пользователем, и возвращает значение типа Integer, указывающее, какая кнопка была нажата.

Синтаксис:

MsgBox(Prompt[,Buttons][,Title][,Helpfile,Context])

· Prompt — строковое выражение, отображаемое как сообщение в диалоговом окне;

· Buttons — числовое выражение, представляющее сумму значений, которые указывают число и тип отображаемых кнопок, тип используемого значка, основную кнопку и модальность окна сообщения. Значение по умолчанию этого параметра равняется 0;Значения констант, определяющих число, тип кнопок и использования значка приведены в таблицах 6.1 –6.3.

· Title — строковое выражение, отображаемое в строке заголовка Диалогового окна. Если этот параметр опущен, то в строку заголовка помещается имя приложения;

· Helpfile — строковое выражение, определяющее имя файла справки, содержащего справочные сведения о данном диалоговом окне. Если этот параметр указан, то необходимо указать также параметр Contex t;

· Context — числовое выражение, определяющее номер соответствующего раздела справочной системы. Если этот параметр указан, то необходимо указать также параметр Helpfile .

Таблица 6.1. Значения параметров Buttons п роцедуры MsgBox ,
определяющие отображаемые кнопки в диалоговом окне.

Константа Значение Отображаемы кнопки
VbOKOnly 0 OK
VbOKCancel 1 OK, Отмена
VbAbortRetryIgnore 2 Стоп, Повтор, Пропустить
VbYesNoCancel 3 Да, Нет, Отмена
VbYesNo 4 Да, Нет
VbRetryCancel 5 Повтор, Отмена

Таблица 6.2. Значения параметров Buttons п роцедуры MsgBox ,
определяющие отображаемые информационные значки
в диалоговом окне.

Константа Значение Значок сообщения
VbCritical 16
VbQuestion 32
VbExclamation 48
VbInformation 64

Таблица 6.3. Значения параметров Buttons п роцедуры MsgBox ,
определяющие основную кнопку в диалоговом окне.

Константа Значение Номер основной кнопки
VbDefaultButton1 0 1
VbDefaultButton2 256 2
VbDefaultButton3 512 3
VbDefaultButton4 768 4

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

Таблица 6.4. Значения параметров Buttons п роцедуры MsgBox ,
определяющие возвращаемые значения на нажатие кнопки

Константа Значение Нажатая кнопка
VbOK 1 ОК
VbCancel 2 Отмена
VbAbort 3 Прервать
VbRetry 4 Повторить
VbIgnore 5 Пропустить
VbYes 6 Да
VbNo 7 Нет





Задание 3.

Введите программу и разберитесь в ее работе.

Sub Знакомство ()

Dim Имя As String

Имя = InputBox ("Введите Ваше имя", "Знакомство")

If Имя <> "" Then

MsgBox "Здравствуй, " & Имя, vbInformation , "Пример окна_ сообщений"

Else

MsgBox "Вы забыли ввести свое имя? " & Имя,_ vbExclamation , "Другой пример окна сообщений"

End If

End Sub


Поделиться:



Последнее изменение этой страницы: 2019-04-19; Просмотров: 279; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.02 с.)
Главная | Случайная страница | Обратная связь