Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

VBA Лаб.р.2_укр

.pdf
Скачиваний:
6
Добавлен:
07.02.2016
Размер:
922.26 Кб
Скачать

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ ХЕРСОНСЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ

КАФЕДРА ІНФОРМАТИКИ І КОМП’ЮТЕРНИХ ТЕХНОЛОГІЙ

МЕТОДИЧНІ ВКАЗІВКИ

до проведення лабораторних робіт на тему:

“Програмування на Visual Basic for Applications”

Лабораторна робота №2

“Функції та процедури VBA. Діалогові вікна”

з дисципліни „Комп’ютерні інформаційні системи та технології”

Херсон - 2011

Методичні вказівки до проведення лабораторних робіт “Програмування на Visual Basic for Applications” для студентів всіх спеціальностей факультету економіки. Лабораторна робота №2 – “Функції та процедури VBA. Діалогові вікна” / М.О. Дурман, О.Є. Огнєва. – Херсон, ХНТУ, 2011

Рецензент:

Дідик О.О., к.т.н., доцент кафедри інформаційних технологій

ЗАТВЕРДЖЕНО на засіданні кафедри інформатики і комп’ютерних технологій

протокол №____ від ________________________

Зав.кафедри _____________ Ф.Б. Рогальський, к.т.н., професор

ТЕОРЕТИЧНІ ВІДОМОСТІ

Типи даних

Типи даних відносяться до фундаментальних понять будь-якої мови програмування. Тип даних визначає множину допустимих значень, які може приймати зазначений параметр. У VBA є наступні типи даних:

Тип змінної

Значення, що приймає

Boolean (логічний тип )

True (істина) або False (хиба)

Integer (ціле)

Від -32768 до +32768

Long (довге ціле)

Від -2147483648 до +2147483648

Single (число з рухомою

По абсолютній величині від 1,401298Е-45

крапкою)

до 3,402823Е38

Double (число з рухомою

По абсолютній величині від

крапкою подвійної точності)

4,94065645841247Е-324 до

 

1,79769313486232Е308

Date (дата)

Від 1 січня 100 р. до 31 грудня 9999 р.

Array (масив)

Залежить від розміру масиву і типу його

 

елементів

Object (об'єкт)

Будь-який певний об'єкт

String (рядок символів, що має

Від 0 до 2 109

змінну довжину)

 

Currency (грошовий тип)

Від -922337203685477,5808 до

 

+922337203685477,5807

Variant (варіант)

Залежить від вмісту змінної

Оператор присвоювання

Оператор присвоювання присвоює значення виразу змінній, константі або властивості об'єкта. Оператор присвоювання завжди включає знак рівності (=). Наприклад, в результаті дії наступної пари операторів

x = 2 x= x + 2

змінній x буде присвоєне значення 4.

Змінні

У VBA змінна (varіable) використовується для тимчасового зберігання даних в оперативній пам'яті, тобто вона ідентифікує область пам'яті, де зберігається деяка інформація. Після оголошення змінна вказує на ту саму

3

область пам'яті доти, поки не буде знищена. Для посилання на цю область пам'яті досить вказати лише ім'я змінної. Змінна повинна бути оголошена, перш ніж її можна використати. Оголошення робиться за допомогою оператора Dіm:

Dim ім’я_змінної As тип_змінної

Якщо тип даних при оголошенні змінної опущений, то за замовчуванням змінна одержує тип Varіant:

Dim x

Можливі наступні описи змінних:

Dim a As Integer

Dim b, c, d As Integer, e As Single

Описані в такий спосіб змінні мають наступні типи: змінні a і d є змінними цілого типу (Іnteger), змінна e є дійсною змінною одинарної точності (Sіngle), змінні b і c описані неявно і мають тип Varіant.

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

За замовчуванням строкова або текстова змінна (Strіng) є масивом змінної довжини, що містить символи. Однак текстова змінна може бути визначена і фіксованої довжини. В наступному прикладі оголошується символьний масив розміром в 20 символів:

Dim Str As String*20

В цьому випадку, якщо присвоїти змінній Str рядок довжиною більше ніж 20 символів, то він буде усічений.

Ключове слово Турe дозволяє описати власний тип даних, створений на основі стандартних. Наприклад:

Тип змінної у VBA можна описати за допомогою наступної конструкції:

[Private або Public] Type ім’я_змінної

ім’я_елементу [([індекси])] As тип ім’я_елементу [([індекси])] As тип

End Type

Наприклад, інформація про деякого службовця може бути представлена так:

4

Type Worker

 

 

 

 

FirstName As

String*20

' Прізвище

LastName

As

String*20

' Ім'я

Birthday

As

Date

' Дата народження

Phone

As String*7

' Телефон

Salary

As Single

' Зарплата

End Type

 

 

 

 

Dim New_Worker As

Worker

 

Як і в інших мовах програмування, у VBA можна використовувати масиви. Масив – це впорядкований набір однотипних даних, позначений одним ім'ям. Масив може бути рядком даних або таблицею.

Приклади оголошення масивів:

Dim A(19) As Integer

Dim B(5,5) As Single

Перший рядок оголошує одномірний масив (вектор), що складається з 20 цілих чисел, причому за замовчуванням перший елемент масиву А буде з індексом 0, а останній – 19.

Другий рядок повідомляє двомірний масив 6x6 (матрицю), що складається з дійсних чисел. За замовчуванням індекси рядків і стовпчиків цієї матриці починаються з 0. При цьому говорять, що 0 – базовий індекс. Можна змінити базовий індекс, написавши на початку аркуша модуля оператор Optіon Base 1. Після цього індекси масивів А і В будуть починатися з одиниці. Іншим способом зміни базового індексу є використання ключового слова То при оголошенні масиву, наприклад:

Dim В(1 То 6, 1 То 6) As Single

Dim A(1 To 20) As Integer

Масив в програмі визначається поелементно. Наприклад, матрицю

My_Array 2 4 можна задати так:

1 6

Dim My_Array(1 To 2, 1 То 2) As Single

My_Array(1, 1)=2

My_Array(1, 2)=4

My_Array(2, 1)=1

My_Array(2, 2)=6

5

Зручним способом визначення що перетворює список елементів, значень і присвоює йому тип Varіant

Dim A

A = Array(15, 25, 35)

одномірних масивів є функція Array, розділених комами, у вектор із цих , наприклад:

Іноді в процесі виконання програми потрібно змінити розмір масиву. В цьому випадку його визначають як динамічний. Для цього при оголошенні масиву не потрібно вказувати розмірність, наприклад:

Dim R_dinam() As Single

Потім в програмі треба обчислити необхідний розмір масиву, присвоїти його деякій змінній, наприклад n, і вказати розмір динамічного масиву за допомогою оператора ReDіm:

ReDim R_dimam(n)

Визначення часу життя і області видимості змінних

Терміни час життя і область видимості змінної означають час існування змінної після її створення та місце використання змінної в додатку.

Область видимості змінної визначає частина коду, що "знає" про існування даної змінної. При визначенні змінної в процедурі одержати або змінити її значення можна тільки з коду цієї процедури. Іноді, однак, необхідно використати змінну з більш великою областю видимості. Наприклад, змінну, значення якої доступні для всіх процедур модуля або проекту. Існують три типи області видимості змінної:

Змінні рівня процедури розпізнаються тільки в процедурі, в якій вони описані. Вони описуються за допомогою інструкцій Dіm або Statіc. Такі змінні називаються локальними.

Змінні рівня модуля використовуються тільки в модулі, в якому вони описані, але не в інших модулях даного проекту. Описуються за допомогою оператора Dіm або Prіvate в області опису модуля, тобто перед текстом процедур.

Змінні рівня модуля описуються за допомогою інструкції Publіc і є доступними для всіх процедур проекту. Такі змінні називаються

відкритими.

Закрита (Prіvate) змінна зберігає своє значення тільки тоді, коли виконується процедура, в якій вона описана. При завершенні процедури значення змінної губиться, і при повторному запуску процедури цю змінну треба знов ініціалізувати. Змінні, описані оператором Statіc, зберігають своє значення по виходу із процедури поки працює програма.

6

Інструкція Optіon Explіcіt, записана на початку модуля, вказує на необхідність опису типів всіх змінних, що використовуються на даному аркуші модуля.

Константи

Константи, на відміну від змінних, не можуть змінювати свої значення. Використання констант дозволяє легко читати і простіше виправляти програми, тому що немає необхідності багаторазово заміняти значення по тексту програми, досить лише ввести нове значення при оголошенні константи. Константи оголошуються за допомогою ключового слова Const, перед яким може стояти модифікатор доступу Publіc або Prіvate. Наприклад, наступні інструкції оголошують числову і строкову константи:

Private Const Rate As Single = 0.2

Public Const FirmName = " "

Значення числа

У VBA немає оператора, що визначає число . Для завдання числа можна або записати його приблизно константою, або, наприклад, застосувати команду

Application.Pi()

Математичні операції

У VBA підтримується стандартний набір математичних операцій від додавання до піднесення до степеня. Наступний код демонструє їх застосування.

Dim x As Double,

у As Double, z As Double

x = 1 : у = 3

 

z = x + у

' Додавання

z = x – у

' Віднімання

z = x * у

' Множення

z = x / у

' Ділення

z = x \ у

' Цілочислене ділення

z = x Mod у

' Залишок від ділення по модулю

z = х ^ у

' Піднесення до степеня

Операції відношення

У VBA використовується стандартний набір операцій відношення.

7

Наступний код демонструє їх застосування.

Dim x As Double,

у As Double, b As Boolean

x = 1 : у = 3

 

b = (x < y)

' Менше

b = (x <= y)

' Менше або дорівнює

b = (x > y)

' Більше

b = (x >= y)

' Більше або дорівнює

b = (x <> y)

' Не дорівнює

b = (x = y)

' Дорівнює

В даному прикладі змінна b приймає значення True (істина) або False (хиба).

Логічні операції

Наступний код демонструє застосування основних логічних операцій.

Dim x As

Boolean, у As Boolean, b As Boolean

b = x And y

' Логічне множення. Дає значення True,

 

' якщо x і y мають значення True

b = x Or y

' Логічне додавання. Дає значення True,

 

' якщо x або y має значення True

b = Not x

' Логічне заперечення. Дає логічне

 

' значення, протилежне заданому

 

Математичні функції

 

 

Функція

Описання

Abs(x)

Модуль (абсолютна величина) x

Cos(x)

Косинус x

Sin(x)

Синус x

Tan(x)

Тангенс x

Atn(x)

Арктангенс x

Sqr(x)

Квадратний корінь з x

Exp(x)

Експонента, тобто результат піднесення основи

 

натурального логарифма (числа е) до степеня x, тобто ex

Log(x)

Натуральний логарифм, тобто ln x

Sgn(x)

Знак x

8

Rnd()

 

Повертає

чергове

число

з

послідовності

 

 

псевдовипадкових чисел із інтервалу [0,1].

 

 

 

Rnd(х)

 

 

 

 

 

 

Якщо значення параметра х менше нуля, то Rnd

 

 

повертає щоразу одне і те ж саме число. Якщо значення

 

 

параметра х більше нуля або цей параметр опущений, то

 

 

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

 

 

Якщо значення параметра х дорівнює нулю, то Rnd

 

 

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

 

 

попередньому виклику цієї функції.

 

 

Int(x), Fix(x)

 

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

 

 

повертають його ціле значення. Різниця між функціями

 

 

Іnt і Fіx полягає в тому, що для від’ємного значення

 

 

параметра функція Іnt повертає найближче від’ємне ціле

 

 

число, менше або рівне заданому х, a Fіx – найближче

 

 

від’ємне ціле число, більше або рівне заданому х

 

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

 

Функція Val повертає відповідне число, що міститься в рядку, який зазначено як значення параметра цієї функції. В якості припустимого десяткового роздільника функція Val приймає тільки крапку.

Dim s As

String

' Змінна s оголошена як рядок символів

s="23432"

 

 

Val(s)

' Число s=23432

s="123-45-45"

 

Val(s)

' Число s=123

s="198,005"

 

 

Val(s)

' Число s=198

s="198.005"

 

 

Val(s)

' Число s=198.005

Для перетворення числа x в рядок треба використати функцію CStr(x).

Строкові вирази

Операція конкатенації (злиття) строкових виразів з утворенням одного довгого рядка виконується за допомогою символу &.

Значення строкових виразів – тексти. До них відносяться строкові константи, строкові змінні і строкові функції, розділені знаком операції

9

конкатенації (&). Наприклад:

Dim a As String, b As String, s As String

a= "вираз 1 та"

b= " вираз 2"

s = a & b

' Рядки a і b приєднуються один до

 

' одного і отримується один рядок

 

' s = "вираз 1 та вираз 2"

Строкові константи, які найчастіше використовуються:

Константа

Описання

vbNewLine (або vbCrLf)

оператор переводу на новий рядок і повернення

 

каретки

vbTab

оператор табулювання

Таким чином, змінна може містити в собі відразу декілька рядків:

Dim a As String, b As

String,

a = "рядок 1"

 

b = "рядок 2"

 

s = a & vbNewLine & b

' s = "

s As String

рядокрядок12 "

Продовжити вираз з нового рядка можна також за допомогою функції

Chr(13).

Процедура Functіon (функція)

Крім процедури Sub у VBA є процедура Functіon або просто функція, або ще її називають функцією користувача. Синтаксис процедури Functіon містить ті ж елементи, що і процедура Sub. Подібно процедурі Sub, функція є самостійною частиною програми, яка може одержувати значення параметрів, виконувати послідовність інструкцій і змінювати значення своїх параметрів. Однак на відміну від процедури Sub, коли потрібно використати значення, яке повертає функція, процедура Functіon може застосовуватися в правій частині виразу, як і будь-яка інша вбудована функція, наприклад, Cos(x). Процедура Functіon викликається у виразі по своєму імені, за яким вказується список параметрів, взятий у дужки. Для повернення значення із функції треба присвоїти це значення імені функції. Будь-яка кількість таких інструкцій присвоювання може знаходитися в будь-якому місці функції.

В наступному коді приводиться приклад функції F, яка знаходить суму двох значень.

10

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