- •Лабораторная работа №1 Тема: Интерфейс Microsoft Visual Basic.
- •Лабораторная работа №2 Тема: Принцип построения команд в среде vba.
- •Лабораторная работа №3 Тема: Реализация условных алгоритмов на vba.
- •Лабораторная работа №4 Тема: Реализация циклических алгоритмов на vba.
- •Лабораторная работа №5 Тема: Использование стандартных функций в vba.
- •Примеры использования некоторых функций
- •Функции преобразования типов данных
- •Лабораторная работа № 6 Тема: Использование массивов на языке vba.
Лабораторная работа №4 Тема: Реализация циклических алгоритмов на vba.
Цель: Научить использовать стандартные процедуры, которые реализуют циклические алгоритмы в VBA, в частности, For…Next, Do…Loop, While…Wend. Познакомить с объектом Диалоговое окно, его методами и свойствами. Объяснить термин Зарезервированные слова.
Ход занятия:
Стандартные процедуры реализации циклических алгоритмов в среде VBA.
Создать макросы, реализующие циклические алгоритмы, в приложении MS Excel с помощью Visual Basic for Application.
Основная форма выполнения циклических действий с известным числом повторений в VB.
For счетчик=НачальноеЗначение To КонечноеЗначение [Step Шаг счетчика] Повторяющиеся действия Next Счетчик Примеч.: [ ] означают, что этот фрагмент может отсутствовать.
Пример:.For I=1 To 100 Step 5 Y=Y+1 Cells(1,Y).Interior.ColorIndex=X+1 Next I |

Создание файла.
Загрузите программу MSExcel.
Сохраните файл под названием ЦиклыVBA.xlsв своей папке.
Вызвать окно VBA.
Использование оператора For…Next.
Создать макрос, который закрашивает ячейки цветом, согласно номеру строки.
Наберите код процедуры Ncolor(). Обращая внимание на предел57– количество цветов, доступных вMSExcel, (включая 0 - прозрачный).
Н
Sub NColor()
For x = 1 To 56
Cells(x, 1).Interior.ColorIndex = x
Next x
End Sub
адо отметить, что описание переменнойХв этом случае отсутствует, что не несет негативных последствий, т.к.VBобладает отличным свойством – прописывать переменные автоматически, присваивая им типVariant, хотя это иногда и не желательно. Но Вы опишите ее.Сохраните изменения в файле и не удаляйте его, используя коды цветов в дальнейшей своей работе.
Использование оператора Do…Loop.Оператор Do…Loop.
Основная форма выполнения циклических действий с неизвестным числом повторений в VB.
Формат записи с предусловием (в строкеDo):
Do [{While | Until} условие на (продолжение|выход)]
[повторяющиеся действия] [Exit Do] [ повторяющиеся действия]
Loop
Формат записи с постусловием (в строкеLoop):
Do [ повторяющиеся действия] [Exit Do] [ повторяющиеся действия]
Loop [{While | Until} условие на (продолжение|выход)
Примеч.: Do–делать,While– пока,Until– до,Loop– петля,Exit- выход.
П
ример:.1)
Do While X<10X=X+1
Loop
2) Do Until X=10
X=X+1
Loop
С
оздать
макрос, который производитумножение
содержимого группы ячеек на фиксированное
значение.
П
ерейдите
в окноMSExcel. Сделайте текущимЛист2.Заполните столбец Ана10 строк любыми числами.
З
Sub Умножение()
Do
X = X + 1
Cells(X, 3) = Range("B1") * Cells(X, 1)
Loop While X <= 10
End Sub
аполните ячейкуВ1числом5.В
ызовите
окноVBA.В нем отражается код Листа1. Вызовите окно кода другого листа: в окнеProjectщелкните двойным щелчкомЛист2.
Создайте процедуру Умножение(), в которой реализуйте следующий алгоритм. Разберитесь с каждой строкой.
В окне MSExcelразместите кнопку*, которой назначьте макросУмножение(). Проверьте работу макроса.
При выполнении программа заполнила в столбце Сне10строк, а11. Все правильно, т.к. проверка в строкеLoopуказала, что ПокаХменьше или равно10– продолжать, вот приX = 10она продолжила работу. В окне кода удалитеравно. Переключитесь наЛист2сотрите значения в столбцеС. Проверьте работу кнопки.
В окне кода замените форму условия, т.е. в строке Loopусловие замените наUntil X=10(т.е. продолжать до10).
Проверьте результат работы кнопки.
Самостоятельно поэкспериментируйте с другими значениями и способами организации предусловия.
Частная форма выполнения цикла с предусловием с неизвестным числом повторений.
While условие на продолжение [повторяющиеся действия] Wend Примеч.: Эта процедура идентична DoWhile…Loop, с той разницей, что не позволяет принудительно выйти из цикла (ExitDo). К употреблению не рекомендуется. Пример:.WhileX<10 X=X+1 Wend |
Процедура While…Wend.
Активизируйте Лист3.
Заполните столбец Акакп.3.2.
Организуем цикл, подобный макросу Умножение(). Для чего в окнеVBAвыделите и скопируйте в буфер текстУмножение(). Откройте окно кодаЛист3и вставьте из буфера процедуру.
Измените Do..LoopнаWhile…Wend.
While X < 10
X = X + 1
Cells(X, 3) = Range("B1") * Cells(X, 1)
Wend
Функция MsgBox.
Р
Sub Умножение()
Y = MsgBox("Начнем?", vbYesNo, "Начало")
While X < 10
X = X + 1
Select Case Y
Case vbYes
d = Range("B1") * Cells(X, 1)
MsgBox Range("B1") & "*" & Cells(X, 1) _
& "=" & d, vbOKOnly, "Ответ"
End Select
Wend
End Sub
асширить
интерфейсMSExcelпоможет знание
функцииMsgBox, которая выводит
диалоговые окна как на рисунках.
Вставим в программу код двух диалоговых
окон (они выделены жирным начертанием).П
роверьте
работу кнопки.Р


азберитесь
с этой функцией, вызвав справку и задав
вУказателепоискMsgBoxFunction.Запишите формат записи этой функции в тетрадь. А также примеры параметров из предложенных в справке таблиц.
|
Функция– стандартная подпрограмма, вызываемая уникальным именем. Используется только внутри операторов. |
В программе используется известный оператор множественного выбораSelect, который в данном случае при выборе кнопкиДавызывает окно, иначе – цикл не начинается. Добавьте самостоятельно фрагментCasevbNo, т.е. выбор кнопкиНет, при котором выходит окно под названиемПамятьс текстом: «Подсчитай в уме!».Обратите внимание!
При склейке фрагментов различного типа данных (напр.ByteиString) необходимо использовать символ&. А при текстовых фрагментах+. Перед запятыми не применять.
Для того чтобы разорвать команду на две строки необходимо в конце, после пробела использовать символ _. Это относится к любому случаю.
Текст, если это не переменная, записывается в кавычках.
Скобки используются при операции присваивания. Например, окно Начало.
Отделяйте знаки & пробелом.
Самостоятельная работа
Использование операторов цикла.
Откройте файл Автоформатир.xls.
И
змените
все процедуры (Краска(),Возврат()
иШрифт()) так, чтобы автоматически
производилось форматирование с теми
же условиями только10ячеек и
сразу. Причем, используйте все изученные
операторы организации цикла.
Использование функции MsgBox.
Добавьте в процедуры Краска() иШрифт() условие, при котором на встреченное программой отрицательное число появляется диалоговое окно и сообщает номер строки и выводит само число.
