Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Mетодичка_VB_часть2.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.17 Mб
Скачать

3. Практичні завдання

  1. Запустіть макрорекордер і застосуйте усі команди форматування. Перегляньте утворений макрос, додайте коментар для кожного рядка. Якщо якась команда або оператор не зрозумілі, застосуйте інтерактивну підказку.

  2. Створіть процедуру, яка утворить набір із певної книги і видаліть з цієї книги аркуш Лист2.

  3. Створіть процедуру, яка утворить в поточній книзі аркуш з ім’ям «Титул» та в клітині С10 вкажіть своє прізвище, ім’я та по батькові, в D12 – свою групу, D13 – поточну дату.

Вживання процедур і функцій

6.Передача величин процедурі

Аргументи в заголовку процедури дають можливість визначити імена і типи величин, які будуть передані цій процедурі, за винятком глобальних змінних і змінних, визначених на рівні модуля. Всі змінні в процедурі є приватними для даної процедури, окрім вказаних як аргументи в заголовку процедури і передані цій процедурі або з неї.

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

Приклад:

Процедура, яка отримує два перші аргументи із зовні перемножує їх і повертає результат у вигляді третього аргументу.

Sub Product1(Value1 As Single, Value2 As Single, Resume As Single)

Resume = Value1*Value2

End Sub

Якщо тип не визначений, то за умовчанням вважається Variant. Існує декілька варіантів передачі значення процедурі з іншої, розглянемо їх:

  1. Для того, щоб викликати цю процедуру з іншої можна передати аргументам для іншої числові значення (константи) і повернути результат в змінній:

Sub Program2() ‘ процедура визначає результуючу змінну типа Single на ім'я Result

DIM Result As Single

Product1 5, 7, Result ‘ викликає процедуру Product1 та передає значення 5

для змінної Value1, 7 - Value2 і отримує результат в змінній Result,

тобто Result= Resume

Debug.Print Result ‘ Метод Print об'єкту Debug друкує результат

у вікні відладки

End Sub

  1. Можна передавати значення змінних, які визначаються для змінних що передаються і результат повертається в змінній:

Sub Program3()

Dim Result As Single, VALA As Single, VALB As Single

VALA = 5

VALB = 7

Product1 VALA, VALB, Result  викликає процедуру Product1 та

‘ передає значення VALA для змінної Value1, VALB - Value2

і отримує результат в змінній Result, тобто Result= Resume

Debug.Print Result

End Sub

  1. Для передачі аргументів можна застосовувати поіменовані списки. У поіменованому списку використовується ім'я змінної із заголовка процедури, привласнене значення або визначена змінна, які потрібно передати:

Sub Program4 ()

Dim Result As Single, VALA As Single, VALB As Single

VALA = 5

VALB = 7

Product1 Product:= Result, Value1:= VALA, Value2:= VALB

отримання результату в змінній Product, тобто Product = Result

передача для змінної Value1 значення VALA , для змінної Value2 значення VALB

Debug.Print Result

End Sub

  1. Багато процедур і функції можуть використовувати невизначену кількість аргументів. Для цього перед останнім аргументом в заголовку процедури, потрібно вказати ключове слово ParamArray (аргумент тим самим перетвориться в масив змінних типа Variant). У самій процедурі/функції необхідно визначити, скільки елементів може містити цей масив, аби потім оперувати цими елементами. В цьому випадку надалі використовують функцію Ubound(), для визначення номера останнього елементу масиву або цикл For Each для операцій зі всіма елементами масиву.

Приклад:

Sub Program5()

Dim Result As Single, Val1 As Single, Val2 As Single, Val3 As Single, Val4 As Single

Val1 = 5

Val2 = 7

Val3 = 10,5

Val4 = -3,2

Product2 Result , Val1, Val2, Val3, Val4 викликає процедуру Product2 та

отримання результату в змінній Result, тобто Result = R

передача для набору Massive() чотирьох значень Val1, Val2, Val3, Val4

Debug.Print Result

End Sub

Sub Prodact2 (R As Single, ParamArray Massive())

процедура в якій знаходиться добуток елементів набору Massive

Dim A елемент із набору Massive

R=1

For Each A in Massive()

R=R*A

Next A

End Sub

Оператор Static використовується в процедурах для збереження змінної в процедурі і після, того як вона передасть цю змінну процедурі, що викликається:

Static ім'я_змінної As тип

  1. Іноді потрібно дозволити користувачеві не визначати деякий аргумент, або використовувати замість нього значення за умовчанням. У цих випадках перед ім'ям такого аргументу в заголовку процедури вказується ключове слово Optional. Така процедура повинна містить перевірку даного аргументу за допомогою функції IsMissing() і якщо він відсутній, використовувати замість нього значення за умовчанням, яке обумовлюється.

Приклад:

Sub Prodact3 (R1 As Single, Val1 As single, Optional Val2)

If IsMissing(Val2) Then Val2=1

R1=Val1*Val2

End Sub

Sub Program6()

Dim Result As Single, Val1 As Single, Val2 As Single

Val1 = 5

Val2 = 7

Product3 Result, Val1 ‘ викликає процедуру Product3 та

отримання результату в змінній Result, тобто Result = R1

передача для змінної Val1 значення Val1,а для змінної Val2 значення не передаємо

Debug.Print Result

Product3 Result, Val1, Val2 ‘ викликає процедуру Product3 та

отримання результату в змінній Result, тобто Result = R1

передача для змінної Val1 значення Val1,а для змінної Val2 значення Val2

Debug.Print Result

End Sub

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]