Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод_пособие_укр.doc
Скачиваний:
4
Добавлен:
11.11.2019
Размер:
1.22 Mб
Скачать

Лабораторна робота 8 Убудовані функції vba. Функції користувача

Розглянемо деякі вбудовані функції VBA: математичні (табл.13), перевірки типів (табл.15), визначення типу змінної (табл.14), обробки рядків (табл.16), дати і часу (табл.17).

Таблиця 13

Функція

Значення, що повертається

1

2

Abs (arg)

Абсолютна величина числа

Atn (arg)

Арктангенс

Cos (arg)

Косинус

Exp (arg)

Експонента

Log (arg)

Натуральний логарифм

Закінчення табл. 13

1

2

Rnd (arg)

Випадкове число з інтервалу [0;1]. Якщо аrg<0, то Rnd повертає одне й те ж число. Якщо arg>0 чи не зазначений, то повертає наступне випадкове число в послідовності. Якщо arg=0, то повертає випадкове число, отримане при попередньому виклику цієї функції. Перед викликом використовується оператор Randomize

Sgn (arg)

Знак числа

Sin (arg)

Синус

Sqr (arg)

Квадратний корінь з аргументу

Tan (arg)

Тангенс

Fix (arg)

Int (arg)

Обидві функції відкидають дробову частину числа

і повертають ціле значення.

Відмінність: для негативного аргументу Int повертає найближче ціле менше або таке,яке дорівнює аргументу, Fix повертає найближче ціле більше або таке,яке дорівнює аргументу

Таблиця14

Функція

Опис

TypeName(<varname>)

Повертає строкий вираз, що є ім'ям типу змінної, крім типу, визначеного користувачем

VarType(<varname>)

Повертає константу, що відповідає типу змінної

Значення, що повертаються:

0 чи vbEmpty

2 чи vbInteger

4 чи vbSingle

6 чи vbCurrency

8 чи vbString

10 чи vbError

12 чи vbVariant

14 чи vbDecimal

1 чи vbNull

3 чи vbLong

5 чи vbDouble

7 чи vbDate

9 чи vbObject

11 чи vbBoolean

13 чи vbDataObject

17 чи vbByte

36 чи vbUserDefinedType (тип, визначений користувачем)

8192 чи vbArray

Наприклад:

Dim B(2) as Integer

VarType(B) ‘ видасть 8194 (8192+2)

Таблиця15

Функція

Опис

1

2

IsArray (varname)

Чи є змінна varname масивом

IsDate (varname)

Чи є змінна датою

IsEmpty (varname)

Чи була змінна оголошена

Закінчення табл. 15

1

2

IsError (varname)

Чи є змінна кодом помилки

IsNull (varname)

Чи є змінна порожнім значенням (Null)

IsNumeric (varname)

Чи є змінна числовим значенням

IsObject (varname)

Чи є змінна об'єктом

Таблиця 16

Функція

Опис

Asc

Повертає код рядка

Chr

Перетворить код у рядок

LCase

UCase

Перетворить рядок до нижнього чи верхнього регістра відповідно

Len

Повертає кількість символів у рядку

Left (String, Length)

Повертає перші n символів рядка

Right(String, Length)

Повертає останні n символів рядка

Mid (String, start [,length])

Повертає n символів рядка, починаючи з зазначеної позиції

LTrim

RTrim

Trim

Повертає копію рядка без пробілів у її початку, кінці й без пробілів у її початку й кінці відповідно

Space (number)

Повертає рядок з n пробілів

String (n,s)

Повертає рядок з n символів s

Strcomp

Повертає результат порівняння двох рядків

Значення: -1 – якщо перший рядок менший другого

0 – якщо рядки рівні

1 – якщо перший рядок більший другий

StrReverse

Повертає рядок у зворотному порядку

Replace

Знаходить і заміняє в рядку одне підстроювання іншим

Таблиця 17

Функція

Опис

Date

Повертає значення типу Variant, що містить поточну системну дату

Time

Повертає значення типу Variant, що містить поточний системний час

Now

Повертає значення типу Variant, що містить поточну дату й час

Hour

Повертає години

Minute

Повертає хвилини

Second

Повертає секунди

Day

Повертає день

Month

Повертає місяць

Year

Повертає рік

Weekday

Повертає день тижня

Закінчення табл. 17

1

2

Timer

Повертає число секунд після опівночі

DateDiff

Повертає кількість тимчасових інтервалів між двома датами

Убудовані діалогові вікна

InputBox служить для введення інформації. Виводить на екран діалогове вікно, що містить повідомлення, поле введення, дві кнопки OK, Cansel .Установлює режим чекання введення тексту користувача й натискання кнопки, а потім повертає значення типу String по натисканню кнопки ОК, що містить текст, уведений у поле введення. При натисканні Cansel повертає порожній рядок Empty. Результат цієї функції завжди рядок.

Синтаксис:

InputBox (Promt [,Title] [,Default] [,Xpos] [,Ypos] [,Helpfile, Context), де

Promt –повідомлення,

Default -поле введення за замовчуванням,

Xpos Ypos -відстань від границі вікна до краю екрана,

Helpfile -відомості про діалогове вікно,

Context -номер розділу довідкової системи.

Наприклад:

X=InputBox («уведіть х», «Приклад»)

If X=Empty then Exit Sub

MsgBox служить для виводу інформації.

Синтаксис:

MsgBox (Promt [,Buttons] [,Title] [,Helpfile, Context]), де

Promt –повідомлення,

Buttons – кнопки (за замовчуванням ОК),

Title –заголовок,

Helpfile -відомості про діалогове вікно,

Context -номер розділу довідкової системи.

У VBA є вже розглянуті нами функції для роботи з масивами, перетворення типів і деякі інші.

Функція RGB.

Об'єкти Font і Interior мають властивість Color, використовуване для установки кольору шрифту й кольору заливання чарунок діапазону. Для установки цієї властивості використовується функція RGB(r, g, b), що має аргументи:

Red - червоний

Green - зелений

Blue – синій

Кожний з аргументів являє собою число від 0 до 255. Функція RGB за значенням аргументів формує будь-який колір, змішуючи червоний, зелений і синій компонент різної інтенсивності.

Розглянемо приклад, у якому за допомогою функції RGB у циклі 15 разів міняється колір шрифту «Хлопці, давайте вчити VBA» в чарунці А1.

Public Sub proc1()

Dim x As Integer

Dim t As Integer

Dim z As Integer

Dim u As Integer

Worksheets(1).Activate

Range("A1").Value = "Хлопці, давайте вчити VBA"

With Range("A1").Font

.Size = 20

.Bold = True

For x = 1 To 15

y = Int(255 * Rnd())

z = Int(255 * Rnd())

u = Int(255 * Rnd())

Randomize

.Color = RGB(y, z, u)

MsgBox "властивість Color=RGB(" & y & "," & z & "," & u & ")"

Next x

End With

Range("A1").Clear

End Sub

Відзначимо, що об'єкти Font і Interior мають іншу властивість - ColorIndex, призначене для завдання кольору шрифту й тла відповідно. Значення властивості ColorIndex може бути встановлено рівним будь-якому цілому числу від 0 до 56 (убудована колірна палітра Excel).

Об'єкт Interior має властивості:

  • PatternColor. Використовується для установки RGB – кольору штрихування діапазону;

  • Pattern. Використовується для установки фонового візерунка внутрішності діапазону. Значення властивості – одна з двадцяти констант Excel;

  • PatternColorIndex. Використовується для установки кольору фонового візерунка діапазону в один з 56 кольорів убудованої палітри Excel.

Функції користувача.

Функція Function створюється за допомогою команди Insert/Procedure/Function

Синтаксис:

Function <ім'я функції> (<список аргументів>)

[<тіло функції>]

End Function ,

де <тіло функції> - послідовність інструкцій, виконуємих під час здобування значення функції.

Функція зберігається в категорії «визначена користувачем» у майстра функцій. Як правило, функція користувача повертає одне значення, але може повертати й масив значень. Може бути викликана з чарунки робочого листа.

У тілі функції Function обов'язково повинен бути оператор, що привласнює імені функції значення.

Саме ж тіло функції складається з тих же операторів, що й тіло процедури Sub.

Завдання до лабораторної роботи 8

  1. Задано вектор C(c1, c2, … сN). Двома способами побудуйте матрицю G(і,j) розміром (nn) за зазначеним у варіанті правилом (табл.19), написавши функцію користувача Matr( ).

1спосіб. Побудуйте матрицю, застосувавши, оператори IF-THEN. Для цього на робочому листі Excel уведіть дані так, як показано у таблиці 18.

Таблиця 18

А

B

C

1

с1

с2

с3

сn

2

i j

1

2

n

3

1

= Matr( )

4

2

n


На стандартному листі модуля наберіть функцію користувача Matr( ), оголосивши, що її значення має тип Variant. Аргументами функції Matr( ) повинні бути змінні C( і, j), що мають тип Variant. Уведіть функцію в чарунку ”B3”. При передачі аргументів функції вкажіть, що вектор C має абсолютні координати, у векторів і і j одна з координат абсолютна, інша – відносна. Далі копіюйте функцію Matr( ) у сусідні осередки. Не забувайте опцію Option Base1.

2спосіб. Побудуйте матрицю (nn), використовуючи оператори FOR-NEXT. Синтаксис оператора вимагає знання початкового й кінцевого значення параметра циклу. Для визначення кінцевого значення передайте функції Matr1( ) змінну C типу Variant і використовуйте інструкції

N=C.Columns.Count, якщо вектор C розташований на робочому листі в рядку

N=C.Rows.Count, якщо вектор C розташований на робочому листі в стовпці.

Нагадуємо, що функція користувача вимагає наявність оператора, що привласнює імені функції визначеного значення. Тому що елементи матриці Matr1(і, j) підраховуються за різними формулами залежно від і і j, варто запастися допоміжним динамічним масивом а( ), визначивши потім його розміри за допомогою оператора Redim a(N,N) і обчисливши а(і, j) за правилом у Вашому варіанті. Після цього потрібно застосувати оператор Matr1=а.

Тому що функція Matr1( ) повертає не одне значення, а масив, на робочому листі Excel потрібно виділити діапазон чарунок, куди будуть уміщені елементи матриці. У рядку формул увести за допомогою майстра функцій формулу

=Т(А1:А?),

де А1:А? – діапазон зі значеннями вектора C, і натиснути <Ctrl>+<Shift>+<Enter>.

Таблиця 19

Варіант

Завдання

1

2

1

, де n=3 і C=(3, 4, 1)

2

, де n=4 і C=(2, 4, 1, 7)

3

, де n=5 і C=(6, 4, 2, 7, 6)

4

, де n=4 і C=(1, 2, 1, 7)

5

, де n=6 і C=(1, 3, 1, 7, 2, 2)

6

, де n=7 і C=(1, 4, 1,3,4, 5, 7)

7

, де n=4 і C=(1, 4, 8, 7)

8

,

де n=5 і C=(2,9,1,7,3)

9

де n=6 і C=(1, 2, 1, 7, 8, 2)

10

де n=7 і C=(5, 1, 1, 7, 1, 2, 1)

  1. Напишіть процедуру розв’язання системи лінійних рівнянь АХ=В, де А – матриця системи (5×5), Х – вектор невідомих (х1, х2, х3, х4, х5), В – стовпець вільних членів.

Нагадуємо, що Х=А-1В.