Мегаобучалка Главная | О нас | Обратная связь


Next переменная _цикла



2019-11-13 181 Обсуждений (0)
Next переменная _цикла 0.00 из 5.00 0 оценок




В данном случае переменная_цикла является именем переменной, которая считает количество шагов цикла. Переменные начало и конец определяют начальное и конечное значение переменная_цикла, а шаг – величину наращивания переменная_цикла после каждого выполнения цикла.

Когда в программе встречается цикл For-Next, переменная_цикла получает значение начало, затем выполняется блок кода вплоть до оператора Next. Далее переменная_цикла увеличивается на величину шаг и сравнивается со значением конец. Если значение переменная_цикла больше, чем значение конец, то цикл прерывается и управление переходит к оператору, следующему за оператором Next. Если значение переменная_цикла меньше или равно значению конец, то блок кода цикла выполняется ещё раз. Так продолжается до тех пор, пока значение переменная_цикла не станет больше значения конец.

Когда встречается оператор Exit For, цикл немедленно прерывается и управление переходит к оператору, следующему за оператором Next. Обычно оператор Exit For применяется для прекращения процесса поиска чего-нибудь, когда вы искали это циклически и нашли.

Если зарезервированное слово Step и величина шаг опущены, то величина переменная_цикла наращивается на 1 после каждого шага цикла. Если величина конец меньше величины начало и величина шаг отрицательна, цикл считается по убывающей, а не по возрастающей.

Счётчик цикла - это обычная переменная, доступная в любом месте цикла и используемая в блоке его кода для выбора различных величин или ячеек. Счётчиком цикла обычно является целое число, используемое в качестве индекса массива переменных или в качестве аргумента метода Cells для выбора ячейки таблицы.

После завершения цикла значение счётчика больше значения конец (или меньше значения конец, если цикл считался по убывающей). Этот фактор удобно использовать, чтобы определить, завершился ли цикл нормально или был преждевременно прерван оператором Exit For.

Особенность:

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

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

                           For Each <элемент> in <набор>

                                      <Тело цикла>

                                     Next <элемент>,

Где <элемент> и <набор> являются переменными типа Variant.

В этом синтаксисе элемент представляет собой переменную типа Variant, что обеспечивает возможность содержать объект. Переменная набор является некоторым набором объектов. В процессе выполнения цикла объект выбирается из набора и помещается в переменную элемент, и это позволяет использовать переменную элемент в блоке кода цикла для осуществления необходимых действий с объектом. Аналогично циклу For...Next оператор Exit For прерывает цикл до его окончания.

C использованием цикла For Each - Next, рассмотрим пример заполнения области случайным набором действительных чисел.

Dim c

Sub Oblast()

For Each C in Selection

C.Value=RND * 10

Next C

End Sub

Цикл Do - Loop является наиболее универсальным из логически прерываемых циклов. существуют четыре конфигурации этого цикла:

1.условие True в начале

2.условие True в конце

3.условие False в начале

4. методов Show и Hide четырех конфигураций:

Условие True в начале.

Do While условие

...блок кода

Exit Do

...блок кода

Loop

Условие True в конце.

Do

...блок кода

Exit Do

...блок кода

Loop While условие.

Условие False в начале.

Do Until условие

...блок кода

Exit Do

...блок кода

Loop

 

 Условие False в конце.

Do

...блок кода

Exit Do

...блок кода

Loop Until условие

 

Зарезервированные слова While и Until определяют логику условия, причем While указывает, что цикл будет выполняться до тех пор, пока условие принимает значение True, а Until указывает, что цикл будет выполняться до тех пор, пока условие не станет True. Отношение между While и Until можно выразить следующим образом:

                      While условие = Until Not условие

Оператор Exit Do предназначен для преждевременного прекращения цикла и обычно применяется в логической структуре (вроде оператора If), которая проверяет альтернативное условие прерывания цикла, например ошибку.

Запись условия в начале или в конце цикла определяет, где это условие будет определяться. Когда условие определяется в начале цикла, цикл выполняется (или не выполняется), если условие исходно удовлетворено. Такой вид цикла удобно применять в тех случаях, когда когда цикл не должен выполняться до тех пор, пока условие не будет выполнено.

Например, при чтении дискового файла можно использовать функцию EOF() для проверки очередной части файла в поисках маркера его конца. Если вы попытаетесь прочесть маркер конца файла, ваша программа остановится с ошибкой; таким образом, перед тем, как прочесть из файла какие либо данные, необходимо проверять очередную часть файла в поисках маркера конца файла. Чтобы сделать это, можно использовать следующее

Open “Myfile.txt” For Input As #1 ’ Открытие файла.

Do Until EOF(1) ’ Проверка на конец файла.

Input #1, A$ ’ Если нет, то чтение данных.

. ’ Код преобразования величины A$

Loop

Close #1 ’ Закрытие файла по концу работы.

В этом фрагменте кода функция EOF() проверяет маркер конца файла. Если вы еще не дошли до конца файла, функция EOF() возвратит False и цикл выполниться, прочитав из файла строку и обработав ее. Если функция EOF() обнаружит маркер конца файла, то она возвратит True и цикл прервется.

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

Так, следующая процедура находит в массиве первый положительный элемент:

’ Поиск первого положительного элемента массива.

Function FirstPos(theArray) As Single

   Dim J As Integer, Value As Single

   J = LBound(theArray) -1              ’Инициализация J

   Do                                                   ’Начало цикла

           J = J + 1                                 ’Наращивание J

          Value = theArray(J)         ’Выбор элемента массива

   Loop Until Value > 0                    ’Проверка элемента

   FirstPos = Value

End Function   

В этой процедуре theArray является переменной типа Variant, и следовательно, позволяет передать из таблицы массив. Функция Lbound() возвращает нижний предел индекса массива. Переменная J устанавливается не единицу меньше этого предела, так как в начале цикла она будет увеличена на 1, что и даст значение нижнего предела индекса массива. Цикл начинается оператором Do, затем наращивается переменная J и из массива выделяется элемент с соответствующим индексом. В конце цикла этот элемент проверяется, и если он положительный, то цикл прерывается, причем переменная Value равна положительному элементу массива, а переменная J - индексу этого элемента массива.    

Такая процедура предполагает, что один из элементов массива будет иметь положительное значение. Если это точно неизвестно, то необходимо проверять значение переменной J и прерывать цикл, когда J превысит верхний предел индекса массива. Иначе вы получите ошибку выполнения 9 «Subscript out of range». Что бы проверить переменную J, процедуру нужно модифицировать следующим образом: 

            ’ Поиск первого положительного элемента массива

    Function FirstPos2(theArray) As Single

   Dim J As Integer, Value As Single

   J = LBound(theArray) -1           ’Инициализация J

   Do                                                ’Начало цикла

           J = J + 1                              ’Наращивание J

   If J > UBound (theArraay) Then ’Превышение верхнего предела?

    Value = CVFrr (xlErrValue) ’Установка кода ошибки, если нет ни одного положительного элемента

                Exit Do                         ’Прерывание цикла

         End If

       Value = theArray(J)       ’Выбор элемента массива

   Loop Until Value > 0                  ’Проверка элемента

   FirstPos2 = Value

   End Function

В этой версии процедуры значение переменной J после каждого наращивания сравнивается с верхним пределом индекса массива, полученном с помощью функции UBond(). Если переменная J превысит верхний предел, то переменной Value будет присвоен код ошибки #VALUE!, чтобы показать, что ни один элемент массива не соответствует заданному условию. В этом случае цикл будет прерван оператором Exit Do. Обратите внимание на то, что теперь функция возвращает значение типа Variant, - это позволяет передать код ошибки.

                              Встроенные диалоговые окна.

 

Передача данных программе и получение данных от программы представляет непростую задачу. В зависимости от конкретного применения программы создается код, реализующий пользовательский интерфейс, и эта часть программы является важной. В профессионально разработанных программах объем кода, реализующего пользовательский интерфейс, занимает около 90 % общего объема кода, и только 10 % используется для обработки данных.

Visual Basic представляет возможность применять диалоговые окна для получения данных от пользователя и для передачи ему информации.

Выделяют следующие виды окон:

· Встроенные диалоговые окна сообщений;

· Встроенные диалоговые окна ввода данных;

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

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

Если требуется отобразить числа. используются функции Str() или Format() позволяющие преобразовать число в символьное представление.Добавление командных кнопок в окно сообщения для создания диалогового окна в полном варианте процедура MsgBox имеет три параметра. Командные кнопки позволят пользователю выбрать направление действий или вариант ответа на простой вопрос.Добавить командные кнопки можно используя необязательные аргументы функции MsgBox().

Коды этих команд передаются в качестве второго аргумента функции (первым аргументом является текст, отображаемый в диалоговом окне) или в качестве поименованного аргумента buttons. Список кодов и имен констант, допустимых в Visual Basic, приведен в табл. 6:                         Таблица 6

Код Константа Описание

Коды командных кнопок

0 vbOKOnly OK
1 vbOKCancel  
2 vbAbortRetryIgnore Abort, Retry и Ignore
3 vbYesNoCancel Yes, No и Cancel
4 vbYesNo Yes и No
5 vbRetryCancel Retry и Cancel

Продолжение таблицы 3
Коды активности по умолчанию

0 vbDefaultButton1 Активная первая кнопка
256 vbDefaultButton2 Активная вторая кнопка
512 vbDefaultButton3 Активная третья кнопка

Коды пиктограмм

16 vbCritical Важное сообщение
32 vbQuestion Предупредительный запрос
48 vbExclamation Предупредительное сообщение
64 vbInformation Информационное сообщение

Коды модальности окна

0 vbApplicationModal Программное модальное
4096 vbSystemModal Системное модальное

 

Если Вы хотите отобразить более одной кнопки, следует определить, которая из них будет активной по умолчанию. Командная кнопка, активная по умолчанию, автоматически считается нажатой, если пользователь после отображения диалогового окна нажал клавишу Enter.

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

Чтобы код был более очевидным, следует использовать поименованные константы, а не числа.

Можно использовать, например, любой из операторов MsgBox():

MsgBox prompt:= “Доброе утро, страна?”, _

buttons:=theCode

MsgBox “Доброе утро, страна?”, theCode

Каждый из этих операторов, после записи на панели Immediat окна Debug, обеспечит создание диалогового окна.

Чтобы определить, какую командную кнопку нажал пользователь для его закрытия, нужно использовать функциональную форму MsgBox() и проверить возвращенное функцией значение. Возможные значения, возвращаемые функцией, и соответствующие им константы Visual Basic приведены в табл. 7.

Таблица 7.

Код Константа Командная кнопка
1 vbOk OK
2 vbCancel Cancel
3 vbAbort Abort
4 vbRetry Retry
5 vbIgnore Ignore
6 vbYes Yes
7 vbNo No

 

Чтобы изменить заголовок, следует добавить в вызов функции MsgBox() еще один строковый аргумент, содержащий новый заголовок. При использовании формы списка аргументов, заголовок будет третьим аргументом; в противном случае используйте title :=”Текст заголовка”.

Sub MakeDialog2()

Dim theCode As Integer

Dim theReply As Integer

theCode = vbYesNo + vbDefaultButton2 + vbExclamation + vbApplicationModal

theReply = MsgBox(prompt:="Вы действительно хотите это сделать?", Buttons:=theCode, _

Title:="Относительно того, что Вы собрались сделать")

Select Case theReply

Case vbYes

theReply = MsgBox(prompt:="Вы нажали кнопочку Да")

Case vbNo

theReply = MsgBox(prompt:="Вы нажали кнопочку Нет")

End Select

End Sub

 

Функция InputBox создает диалоговое окно другого типа. Базовое окно ввода содержит окно редактирования, командную кнопку ОК и Cancel. Любой текст, записываемый в текстовое окно диалогового окна, будет возвращен функцией после того, как пользователь нажмет кнопку ОК, иначе будет возвращена пустая строка.

Первый аргумент функции InputBox() – строка текста, применяемая в качестве запроса на ввод в диалоговом окне;

второй – заголовок;

третий – default – содержит любой текст по умолчанию, который Вы можете отобразить в окне редактирования при открытии диалогового окна.

Функция не использует аргумент buttons. Все аргументы должны быть строками текста, и значение, возвращаемое функцией, также является строкой текста. Для того, чтобы использовать возвращенное функцией значение в качестве числа, нужно преобразовать его из символьного представления в двоичное с помощью функции Val().

Существует еще два типа встроенных диалоговых окон: GetOpenFilename и GetSaveAsFilename. Эти окна не открывают файл и не сохраняют его, а только позволяют указать его имя и путь. Команды, создающие такие диалоговые окна, являются не операторами Visual Basic, а методами Application.

Операторы, создающие эти два типа диалоговых окон, имеют следующий синтаксис:

theFilename=Application.GetOpenFilename (файловый_фильтр,индекс_фильтра, заголовок)

theFilename=Application.GetSaveAsFilename (начальное_имя_файла, _файловый фильтр, индекс_фильтра, заголовок)

Оба метода применяются к объекту Application и возвращают имя файла и путь, выбранные пользователем.

Аргумент файловый_фильтр определяет, какие файловые фильтры перечисляются в выпадающем списке File Type диалогового окна. Всписке файлов диалогового окна появляются только те файлы, которые совпали с выбранным файловым фильтром.

Файловый фильтр состоит из двух частей – текста и фильтра. Текст отображается в выпадающем списке File Type; а фильтр используется для выбора файлов из списка.

Аргумент индекс_фильтра является целым числом, задающим в выпадающем списке File Type файловый фильтр поумолчанию. Аргумент заголовок аналогичен используемому для функции InputBox(). Аргумент начальное_имя_файла определяет начальное , заданное по умолчанию, имя файла, которое помещают в окно редактирования текста.

 

                Диалоговые окна приложения.

 

Программы на Visual Basic могут вызывать все диалоговые окна, существующие в программах MS Office. Однако эти диалоговые окна действуют не так, как описанные выше, и возвращают программе на Visual Basic без изменений какой-либо таблицы или ячейки. Если Вы вызываете диалоговое окно, то оно не возвращает значения программе Visual Basic, а осуществляет свои нормальные функции.

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

Для вызова диалогового окна приложения пользуйтесь набором Dialogs объекта Application. Для поиска доступных диалоговых окон и констант воспользуйтесь Object Browser, выбрав объект Constants из библиотеки MS Office (нужные константы начинаются с xlDialog).

Следующая процедура отображает диалоговое окно FormatNumber:

Sub TestDialog2()



2019-11-13 181 Обсуждений (0)
Next переменная _цикла 0.00 из 5.00 0 оценок









Обсуждение в статье: Next переменная _цикла

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

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



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (181)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.009 сек.)