
- •Лабораторная работа №3. Работа с электронными документами в ms Word
- •Лабораторная работа №4. « Работа с электронными таблицами в ms Excel . Вычисления сумм, произведений, арифметических выражений, построение диаграмм » Отчет:
- •Лабораторная работа №5. Работа с макросами в приложениях Word и Excel
- •Лабораторная работа №6. Обмен данными между листами Excel и программой на vba
- •Лабораторная работа №7. Программирование арифметических формул. Оконный ввод-вывод информации на vba
- •Лабораторная работа №9. Логические операции и стандартные функции vba
- •Лабораторная работа №10. Условные операторы и программирование разветвления программы на vba
- •Лабораторная работа №11. Циклы на vba
- •Лабораторная работа №5
Лабораторная работа №11. Циклы на vba
Цель работы: научиться на VBA применять циклы FOR-NEXT, WHILE-WEND, DO-LOOP, FOR-EACH на примере инженерного расчета разгазирования пластовой нефти.
Теория: При начале цикла For...Next Visual Basic оценивает start, end и step.Это единственный раз, когда оцениваются эти значения.Затем назначается значение start переменной counter.Перед выполнением блока операторов сравниваются counter и end.Если значение counter превысило значение end (или меньше его при отрицательном значении step), цикл For завершается и управление передается оператору, следующему за оператором Next.В противном случае выполняется блок операторов.
Каждый раз при обнаружении оператора Next Visual Basic увеличивает counter на step и возвращается к оператору For.После этого сравниваются counter и end, и в зависимости от результата происходит либо выполнение блока, либо выход из цикла.Этот процесс продолжается до тех пор, пока counter не превысит end, или не встретится оператор Exit For.
Цикл не останавливается до тех пор, пока counter не превысит end.Если counter равен end, то цикл продолжается.Сравнением, определяющим, следует ли выполнять блок, является counter <= end для положительного step и counter >= end для отрицательного step.
Изменение значения counter внутри тела цикла может осложнить читаемость и отладку кода.Изменение значений start, end или step не влияет на значения итерации, определенные при первом входе в цикл.
WHILE-WEND- Операторы WHILE...WEND предназначены для циклического повторения последовательности операторов до тех пор, пока заданное условие истинно. Синтаксис: WHILE<выражение> ... [<операторы цикла>] ... WEND В случае если <выражение> не равно нулю (т.е. истинно), осуществляется выполнение <операторов цикла> до тех пор, пока не будет встречен оператор WEND. Затем происходит возврат к оператору WHILE и выполняется проверка <выражения>. Если оно, по - прежнему, истинно, то <операторы цикла> выполняются вновь. Если же оно не истинно, выполнение программы продолжается с оператора, который непосредственно следует за оператором WEND. Допускается произвольное число уровней вложенности циклов WHILE…..WEND. Каждый оператор WEND соответствует последнему оператору WHILE. Если у оператора WHILE нет соответствующего ему оператора WEND, выдается сообщение об ошибке "WHILE without END". Если же наоборот оператору WEND не соответствует оператор WHILE, то выдается сообщение "WEND without WHILE
DO-LOOP- Повторяет блок инструкций, пока условие Boolean равно True или до тех пор, пока условие станет True.
Используется структура Do...Loop, если требуется повторение набора инструкций неограниченное число раз, пока условие выполняется.Если вы хотите повторить инструкцию определенное количество раз, то For...Next Statement обычно является лучшим выбором.
While или Until можно использовать для указания condition, но не оба одновременно.
Можно проверить condition только один раз — в начале или в конце цикла.Если проверить condition в начале цикла (в инструкции Do), цикл может никогда не выполниться, даже один раз.Если проверить в конце цикла (в инструкции Loop), цикл всегда выполняется по крайней мере один раз.
Условие обычно является результатом сравнения двух значений, но оно может быть любым выражением, значение которого при вычислении имеет тип Тип данных Boolean (Visual Basic) (True или False).Сюда же относятся значения других типов данных, например, числовых типов, преобразованные в тип Boolean.
Циклы Do могут вкладываться друг в друга.Также можно вложить друг в друга различные виды управляющих структур.Дополнительные сведения см. в разделе Вложенные структуры управления (Visual Basic).
FOR-EACH - Повторяет группу операторов применительно к каждому элементу коллекции
Цикл For Each...Next используется при необходимости повтора набора инструкций для каждого элемента коллекции или массива.
Visual Basic вычисляет коллекцию только один раз — перед началом цикла.Если в блоке операторов изменяется element или group, то эти изменения не оказывает влияния на повторение цикла.
Когда переменной element будут присвоены все элементы коллекции, цикл For Each остановится и управление будет передано оператору, следующему за оператором Next.
Если element не был объявлен вне цикла, то его нужно объявить в операторе For Each.Можно объявить тип element явным образом при помощи оператора As, или можно использовать определение типа для назначения типа.В этом случае областью действия element является основная часть цикла.В то же время нельзя определять element и внутри, и снаружи цикла.
Можно дополнительно указать element в инструкции Next.Это повышает удобочитаемость программы, особенно если в ней имеются вложенные циклы For Each.При этом следует указать ту же переменную, что и в соответствующем операторе For Each.
Можно избежать изменения значения element внутри цикла.Это может сделать его более сложным для чтения и отладку кода.Изменение значения group не влияет на коллекцию или ее элементы, которые были определены в начале цикла.
Занятие 1 (Уровень А)
На листе 1 набрали справочную информацию по составу пластовой нефти. Столбец 1 – название компонента нефти, столбец 2 – химическая формула, столбец 3 – молекулярная масса по таблице Менделеева (Mi), первые 2 строки использовали для заголовков столбцов)
В столбце 4 набрали состав пластовой нефти в % мольных Ci, в ячейках A15,A17 - набрали исходное количество пластовой нефти (m) и коэффициент пересчета тонн в баррели (для заданной Вам нефти). Для контроля под столбцами поместили сумму элементов (сумма концентраций компонентов должна быть 100%) . 5 столбец задали через формулу Excel как произведение 4 столбца на 3 столбец.
Поместили на лист 1 кнопки «Расчет» и «Очистка». Подготовили заголовки для всех расчетных столбцов и ячеек на листе
Занятие 2 (Уровень А)
По заданным расчетным формулам набрали пример программы перерасчета состава пластовой нефти из мольных % (Ci) в число молей (Ni) массовые % (Gi), а также расчета массы каждого компонента (mi), количества товарной нефти Kn (жидкая фаза пластовой нефти при н.у.) в тоннах и баррелях, количества нефтяного газа Kg ( углеводороды из газовой фазы пластовой нефти при н.у.) и количества балластного газа (Kb) в тоннах и кубометрах.
Отладили программу расчета и очистки по шагам и по кнопкам. Результаты проверили по закону сохранения массы (сумма всех компонентов на каждом шаге должна быть точно равна исходной заданной массе)
6. Значения в окне во время расчета (8 цикл) соответствуют столбцу H
В
ывод:
Я научился
на VBA
применять циклы FOR-NEXT,
WHILE-WEND,
DO-LOOP,
FOR-EACH
на примере инженерного расчета
разгазирования пластовой нефти.
оглавление