Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
Топ:
Оснащения врачебно-сестринской бригады.
Основы обеспечения единства измерений: Обеспечение единства измерений - деятельность метрологических служб, направленная на достижение...
Интересное:
Национальное богатство страны и его составляющие: для оценки элементов национального богатства используются...
Мероприятия для защиты от морозного пучения грунтов: Инженерная защита от морозного (криогенного) пучения грунтов необходима для легких малоэтажных зданий и других сооружений...
Инженерная защита территорий, зданий и сооружений от опасных геологических процессов: Изучение оползневых явлений, оценка устойчивости склонов и проектирование противооползневых сооружений — актуальнейшие задачи, стоящие перед отечественными...
Дисциплины:
2023-02-03 | 63 |
5.00
из
|
Заказать работу |
|
|
Цель работы:научиться использовать в программах VBAуправляющие конструкциидля программирования разветвленийи повторяющихся вычислений.
Задание 1 Использование оператораIf… Then... Else
1. Откройте приложение Excel и создайте новую книгу. Сохраните ее с именем If_ For.xlsm.
2. Войдите в редактор VBA и вставьте новую форму.
3. Разместите на форме элементы управления Label, TextBoxи CommandButtonс окна ToolBox и отредактируйте их свойства, как показано на рис. 5.1.
4. Введите именаформы и элементов управления TextBoxи CommandButton в соответствии с таблицей 5.1.
5. Двойным щелчком на кнопкеВыполнить откройте окно кода и введите следующий код:
Private Subcmd_OK1_Click()
Dim a As Single, b As Single, c As Single, res As Single
a = Val(txt_a)
b = Val(txt_b)
c = Val(txt_c)
If a > b And b > c Then
MsgBox ("Введены значения a>b и b>c")
res = a + b + c
txt_Res = Str(Res)
ElseIf (a < b Or b < c) Then
MsgBox ("Введены a<b и b<c")
res = a + b - с
txt_Res = Str(res)
Else
MsgBox "Условия не выполнены"
res = 0
txt_Res = Str(res)
End If
EndSub
Рис. 5.1 Вид формы в режиме конструктора
Таблица 5.1 Имена элементов на форме Операторы ветвления
Элемент | Наименование | Имя |
Форма | Операторы ветвления | frm_If |
Текстовое поле | Введите a | txt_a |
Текстовое поле | Введите b | txt_b |
Текстовое поле | Введите c | txt _c |
Текстовое поле | Результат | txt_Res |
Кнопка | OK | cmd_OK1 |
Кнопка | Очистить | cmd_Clear1 |
Кнопка | Выход | cmd_Exit1 |
6. По аналогии с п. 5 для кнопки Очиститьвведите следующий код для очистки текстовых полей формы:
PrivateSubcmd_Clear1_Click()
txt_a=” ” :txt_b=” ”: txt_c=” ”: txt_Res=” ”
End Sub
7. Аналогично для кнопки Выход введите код:
PrivateSub_cmd_Clear1_Click()
frm_If.Hide
EndSub
8. Протестируйте разработанную программу, выполняя ее при разных вариантах исходных данных.
9. Запустите программу в режиме отладки и используя окноLocals,просмотрите текущие значения переменных a, b, cи resипоследовательность выполнения операторов в программе в зависимости от значений исходных данных.
|
10. Cохраните разработанную форму.
Задание2 Использование OptionButton
1. Вставьте в проект новую форму и оформите ее, как показано на рис. 5.2. Имена элементов управления TextBoxиCommandButtonвведите по аналогии с заданием 1, имена OptionButtonоставьте по умолчанию.
Рис. 5.2 Вид формы в режиме конструктора
2. Для кнопкиВыполнить введите следующий код:
Private Subcmd_OK1_Click()
Dim a As Single, b As Single, c As Single, res As Single
a = Val(txt_a): b = Val(txt_b): c = Val(txt_c)
If OptionButton1 = True Then
MsgBox ("Операция a+b+c")
res = a + b + c
txt_res = Str(res)
ElseIf OptionButton2 = True Then
MsgBox ("Операцияa-b-c")
res = a - b - c
txt_res = Str(res)
ElseIf OptionButton3 = True Then
MsgBox " Операцияa*b*c"
res = a * b * c
txt_res = Str(res)
Else
MsgBox ("Операция не выбрана")
EndIf
Sub End
3. Введите код отклика на нажатие кнопок Очистить и Выход по аналогии с п. п6 - 7 задания 1.
4. Протестируйте созданную программу исохраните разработаннуюформу с именем Form_ OB. frm.
Задание3 Использование операторов циклаFor… Next
1. В книге If_ For.xlsm вставьте новый модуль и создайте в нем процедуру с именем For_ maxиопцией Private.
2. Вставьте между строками заголовка и окончания процедуры For_ max следующий код:
Dim i As Integer
Dim n As Integer
Dim x As Single, max As Single
max = 0
n = InputBox( "Введите количество чисел")
For i = 1 To n
x = InputBox ("Введите" &Str(i) & "-ечисло")
If x > max Or i = 1 Then max = x
Next i
MsgBox "max = " & Str(max)
3. Протестируйте процедуру For_ max. Обратите внимание на конструкцию For… Next.
4. Вставьте по аналогии с п. 1 новую процедуру с именем For_ min. Скопируйте в нее код предыдущей процедуры и измените его так, чтобы определялось минимальное число из введенных чисел.
5. Разработайте форму для выбора одной из двух процедур For_ maxили For_ minс использованием элементовOptionButton.
6. Протестируйте и сохраните созданную форму с именем max_ min. frm.
Задание4Работа с конструкциями While…Loop, Until…Loop
1. Вставьте новую форму и оформите ее, показано на рис. 5.3.
|
Рис. 5.3 Вид формы в режиме конструктора
2. Имена элементам TextBos, ListBoxи CommandButtonприсвойте в соответствии с таблицей 5.2.
3. В разделе объявлений модуля объявите динамический массив и переменую для хранения его размерности при переопределении:
Option Base 1
Dim Massiv() As Single, Size As Integer
Таблица 5.2Имена элементов на форме Обработка массивов
Элемент | Наименование | Имя |
Форма | Обработка массивов | frm_mas |
Текстовое поле | Размерность массива | txt_razm |
Текстовое поле | Максимальный элемент | txt_max |
Кнопка | Ввод массива | cmd_Vvod |
Кнопка | Поиск max | cmd_max |
Кнопка | Выход | cmd_Exit1 |
Список | Массив | lst_Massiv |
4. Для кнопкиВвод массивавведитеследующий код:
Private Sub cmd_Vvod_Click()
Dim i As Integer
Size = Val(txt_razm.Text)
ReDim Massiv(Size)
i = 1
Do While i <= Size
Massiv(i) = Val(InputBox("Массив(" + Str(i) + ")=", "Вводмассива"))
lst_Massiv.AddItem "A(" + Str(i) + ")=" + Str(Massiv(i))
i = i + 1
Loop
End Sub
5. ДлякнопкиПоиск max введите следующий код обработчика:
Private Sub cmd_max_Click()
Dim i As Integer
max = Massiv(1)
i = 1
Do Until i > Size
If Massiv(i) > max Then max = Massiv(i)
i = i + 1
Loop
txt_max.Text = Str(max)
End Sub
6. Для кнопки Выход введите код для закрытия формы:
Private Sub cmd_Exit_Click()
frm_mas.Hide
End Sub
7. Протестируйте программу. Обратите внимание на конструкции While… Loop, Until… Loop, опцию Option Base1,на способ заполнения позиций элемента ListBox.
8. Добавьте на форму кнопкуОчиститьдля очистки текстовых полей формы.Напишите и введите для нее код. Протестируйте работу кнопкиОчистить.
9. Сохраните форму frm_ masи закройте книгу Excelс сохранением изменений. Оформите отчет по лабораторной работе.
Задание для самостоятельной работы
Разработайте проект, включающий форму и необходимые программы для поиска макимального и минимального элемента в двумерном динамическом массиве.
Методические материалы
Операторы ветвления- одни из самых важных и часто используемых конструкций в языках программирования. Общий принцип их работы прост: проверяется соответствие каким-то условиям (истинность или ложность выражений) и в зависимости от этого выполнение программы направляется по одной или другой ветви.
Оператор If…Then... Else применяется:
· когда нужно проверить на соответствие одному условию и в случае соответствия сделать какое-то действие;
If nTemperature < 10 Then
MsgBox "Одеть куртку"
|
End If
· когда нужно сделать то же, что и в предыдущем примере, а в случае несоответствия выполнить другое действие;
If nTemperature < 10 Then
MsgBox "Одеть куртку"
Else
MsgBox "Одеть ветровку"
End If
· когда нужно проверить на соответствие нескольким условиям;
If (nTemperature < 10) And (bRain = True) Then
MsgBox "Одеть куртку и взять зонтик"
End If
· в случае, если первая проверка вернула False, нужно проверить на соответствие еще нескольким условиям (в этом случае удобно использовать ElseIf);
If (bIGoInCar = True) Then
MsgBox "Одеться для машины"
ElseIf nTemperature < 10 Then
MsgBox "Одеть куртку"
Else
MsgBox "Можно идти в рубашке"
EndIf
ОператорSelect Case идеально подходит для проверки одного и того же значения, которое нужно много раз сравнить с разными выражениями;
Select Case sDayOfWeek
Case "Понедельник "
MsgBox "Салат из шпината"
Case "Вторник"
MsgBox "Салат из морской капусты"
Case Else
MsgBox "На этот день у нас ничего не предусмотрено"
End Select
Операторы циклав VBAиспользуются в ситуациях, когда нужно выполнить какое-либо действие несколько раз. Если известно, сколько раз нужно выполнить действие, используется конструкция For…Next:
For iCounter = 1 to 10
MsgBox "Счетчик: " & iCounter
Next
Чтобы указать, насколько должно прирастать значение счетчика, используется ключевое слово Step:
For iCounter = 1 to 10 Step 2
MsgBox "Счетчик: " & iCounter
Next
Можно и уменьшать исходное значение счетчика:
For iCounter = 10 to 1 Step -2
MsgBox "Счетчик: " & iCounter
Next
Для безусловного выхода из конструкции For…Next используется команда Exit For.
VStop = InputBox (“Введите значение останова”)
VInput = CInt(VStop)
For iCounter = 1 to 10
MsgBox "Счетчик: " & iCounter
If iCounter =VInput Then Exit For
Next
Очень часто в VBA требуется сделать какое-нибудь действие со всеми элементам коллекции или массива - перебрать все открытые документы, все листы Excel, все ячейки в определенном диапазоне и т.п. Для того, чтобы пройти циклом по всем элементам коллекции, используется команда For Each … Next:
ForEachoWbkinWorkbooks
MsgBoxoWbk.Name
Next
При использовании этого приема можно очень просто найти и получить ссылку на нужный нам объект:
For Each oWbk in Workbooks
If oWbk.Name = "Сводка.xls" Then
Set oMyWorkBook = oWbk
Exit For
End If
Next
|
Когда число повторений зависит от какого-либо условия, используются конструкции Do While…Loop и Do Until…Loop.
Конструкция Do While означает: выполнять какое-либо действие до тех пор, пока условие истинно:
Do While MyVar < 10
MyVar = MyVar + 1 :MsgBox “ MyVar = “ &MyVar
Loop
Второй вариант -Do Until: цикл будет выполняться до тех пор, пока условие ложно.
Do Until MyVar >= 10
MyVar = MyVar + 1
MsgBox“ MyVar = “ &MyVar
Loop
Можно переписать цикл так, чтобы условие проверялось после завершения цикла:
Do
MyVar = MyVar + 1
WScript.Echo “MyVar = “ & MyVar
LoopWhileMyVar< 10
В этом случае цикл будет выполнен по крайней мере один раз.
Немедленный выход из цикла можно произвести по команде Exit Do.
Массивыиспользуются для хранения в памяти множества значений. Объявление массива производится очень просто:
DimMyArray (10) AsInteger
Параметр10 - это верхняя граница массива. Количество элементов, которое может хранить массив,от 0 до верхней границы включительно. Если требуется, чтобы нумерация элементов в массиве начиналась с 1, в разделе объявлений модуля используется команда Option Base 1
Массивы могут быть многомерными:
DimMyArray (4, 9)
В каждой строке многомерного массива удобно хранить данные, относящиеся к одному объекту (например, имя сотрудника, уникальный номер, номер телефона). В VBA в одном массиве может быть до 60 измерений.
В динамических массивах размер можно изменять в ходе выполнения программы. Динамический массив объявляется следующим образом:
DimMyArray () '- объявляем массив без верхней границы
ReDimMyArray (4) ' - изменяем размер массива
Чтобы старые значения сохранить, используется ключевое слово Preserve:
ReDimPreserveMyArray (7)
Массивы можно создавать и заполнять одновременно при помощи встроенной функции Array():
DimMyArray
MyArray = Array(100, 200, 300, 400, 500)
Очистить массив можно командой Erase:
EraseMyArray
Массив фиксированной длины просто очищается, динамический массив разинициализируется - его придется инициализировать (определять размер) заново.
В динамических массивах часто неизвестно, сколько элементов находится в массиве. Для определения количества элементов используется функция UBound().
При программировании в VBA вместо массивов в объектных моделях приложений MicrosoftOffice обычно используются коллекции. Коллекции - это специальные объекты, которые предназначены для хранения наборов одинаковых элементов. Например, в Word предусмотрена коллекция Documents для хранения элементов Document - то есть всех открытых документов, в Excel - коллекции Workbooks (открытые книги) и Worksheets (листы в книге) и т.п. Коллекции обычно удобнее, чем массивы: они изначально безразмерны и в них предусмотрен стандартный набор свойств и методов - метод Add() для добавления нового элемента, свойство Count для получения информации о количестве элементов, метод Item() для получения ссылки на нужный элемент.
|
Лабораторная работа № 6
|
|
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...
Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!