Запуск макросу на виконання з редактору Visual Basic




Знаходячись в редакторі Visual Basicможливо запустить макрос на виконання не переходячи в Microsoft Excel. Для цього достатньо перевести курсор в межі коду потрібного макросу та застосуйся один з варіантів:

· натисніть кнопку Run ( );

· виберіть команду із меню Run → Run Sub/UserForm;

· застосуйте функціональну клавішу F5.

Для того, щоб виконати інший макрос, знаходячись в редакторі Visual Basic, слід вибрати команду Macros в меню Tools, або в полі Procedure верхній частині вікна коду вибрати ім’я макросу із списку та виконати один з варіантів наведених вище.


Основні елементи мови Visual Basic

Оскільки Visual Basic для додатків є об'єктно-орієнтованою мовою програмування, будуть описані об'єктні моделі, які можуть використовуватися у Exel.

Це не лише власна об'єктна модель Exel, але і об'єктні моделі Visual Basic для додатків Microsoft Office, які є загальними для всіх додатків сімейства.

1. Організація програми на мові VB для Excel

Програма на мові VB складається з одного або декількох модулів. Модуль – це аркуш з текстом програми, вставлений в робочу книгу. Причому не обов'язково, щоб всі модулі програми знаходилися в одній робочій книзі.

Зазвичай текст програми на мові VB починається з опцій, які управляють описом змінних, способом порівняння рядків і тому подібне Потім слідують оголошення глобальних змінних або констант для даного модуля, тобто таких змінних, які можливо використовувати у всіх процедурах модуля. Далі розташовується текст функцій і процедур, складових програми.

Основними компонентами програми на VBA є процедури і функції. Вони є фрагментами програмних кодів, розташдваних між операторами Sub і End Sub або між операторами Function і End Function. Ось як може виглядати процедура VBA:

Sub (, , ...)

End Sub

Приклад:

Option Base 1 ' початковий індекс в масиві дорівнює 1

Option Explicit ' включення режиму визначення не описаних змінних

Const PI As Double = 3,14159 ' оголошення константи для модуля

Function LENC(R) ' оголошення початку LENC() функції

LENC = 2*PI*R ' розрахунок LENC- довжини кола

End Function ' оголошення кінця функції

Sub SHR() ' оголошення початку процедури SHR

DIM Res ' оголошення змінної Res

Res = LENC(2.5) ' розрахунок змінної Res за функцією LENC(), де змінній R передається значення 2.5

MsgBox “Довжина кола дорівнює:” &Cstr(Res) 'вивод результату Res у вікні повідомлення

End Sub ' оголошення кінця процедури

...

кінець модуля

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

Sub Proc1()

...

[Module5].Proc2

...

End Sub

Але якщо з іншої книги те ім'я книги:

[Ім’я_файлу.XLS].[Module5].Proc2

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

Private Sub Proc1()

...

End Sub

Аби захистити весь модуль від доступу з процедур іншої робочої теки, помістите в початок модуля наступного оператора:

Option Private Module

2.Створення і вживання процедур

Процедури – це самостійно використовувані невеликі програми.

Кожна процедура починається з оператора оголошення процедури Sub і закінчується оператором кінця End Sub.

Синтаксис: Sub ім' _процедури(аргументи)

Тіло процедури

End Sub

Аргументи – значення, що передаються програмою процедурі при виклику.

Існує 4 типи процедур:

1. Загальні процедури

2. Командні процедури

3. Процедури обробки подій

4. Функції

  1. Загальні процедури, відомі як просто процедури, - це стандартні процедури VB, які, загалом, нічого не змінюють поза свого тіла. Вони обчислюють змінні, відображують документи, передають повідомлення інших програм і маніпулюють дисковими файлами.
  2. Командні процедури розширюють можливості прикладних програм на VB, тобто Excel, а також програми створені макрорекордером.
  3. Процедури обробки подій пов'язані з конкретними подіями і виконуються, коли ці події відбуваються. Подія – натиснення командної кнопки, виконання директиви меню, відкриття або закриття таблиці Excel, зміна вмісту діалогового вікна і тому подібне

Процедури обробки подій можуть бути також і командними або загальними процедурами.

Для того, щоб використовувати написану процедуру або функцію, необхідно викликати її. Як же здійснюється виклик процедур і функцій? Процедуру з не порожнім списком аргументів можна викликати лише з іншої процедури або функції, використавши її ім'я із списком фактичних значень аргументів як один з операторів VBA.

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

Sub Proc1()

…………

Proc2

…………

End Sub

Sub Proc2()

…………

End Sub

Процедура з порожнім списком аргументів може бути викликана не лише з іншої процедури або функції, але і за допомогою комбінації клавіш швидкого виклику, команд меню, що розкриваються, або кнопок панелей інструментів. Можна також пов'язати таку процедуру з виконанням самих різних подій.

  1. Функції – це процедури, що повертають результуюче значення в своєму імені. Функції поводяться як субпроцедури, їх можна використовувати безпосередньо у формулі, подібно змінній.

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

Function (, , ...) [As ]

=

End Function

Функцію ж можна викликати не лише за допомогою окремого оператора VBA, але і помістивши її ім'я із списком фактичних значень аргументів прямо у формулу або вираження в програмі на VBA або, наприклад, прямо у формулу в обчислюваних значень. Приклад наведений у п.2. А також функцію можливо викликати із книги Exel (Вставка → Функція → категорія Определенные пользователем).

3.Змінні

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

Змінні – це пойменовані області в пам'яті комп'ютера.

Зазвичай перед тим, як використовувати змінну, відбувається її оголошення, тобто заздалегідь повідомляється (Visual Basic), які саме зміні використовуватимуться в програмі, при цьому також задається тип цих даних, для виділення місця памяті для цих змінних. У VBA, як і в звичайній мові Basic, для цього використовується оператор Dim. Ось синтаксис цього оператора:

Dim [As ], [As ]…

У VBA діють наступні правила іменування змінних. Ім'я не може бути довше 255 символів, воно повинне починатися з букви, за якою можуть слідувати букви, цифри або символ підкреслення. Воно не повинне містити пропусків, зна­ків перепинення або спеціальних символів, за винятком найостаннішого знаку. В кінці до імені змінної може бути доданий ще один з наступних шести спеціальних символів — описувачів типа даних: ! # $ % & @

Ці символи не є частиною імені змінної: якщо в програмі використовуються одночасно імена string1$ і string1, то вони посилаються на одну і ту ж строкову змінну. Не можна використовувати одне і те ж ім'я змінної з різними символами визначення типа даних або одночасний явний опис типа даних і не відповідний цьому типові даних спеціальний символ.

Крім того, не допускається використання, як імен змінних, ключових слів VBA і імен стандартних об'єктів.

В ключових словах VBA і іменах стандартних об'єктів при введенні перша буква автоматично пере­творюється в прописну.

Допускається використання в іменах змінних букв не лише латинського алфавіту та і кирилиці.

Для того, щоб не забувати оголошувати кожну змінну перед її використанням, необхідно помістити оператора Option Explicit в початок кожного модуля. Або можете встановити пара­метр Require Variable Declaration (Явний опис змінних) на вкладці Editor (Редактор) діалогового вікна Options (Параметри) редактора VBA.

Типи даних

Змінні і типи даних визначають, де і як зберігаються дані в пам'яті комп'ютера. Бажано в VB вказувати типи для кожної змінної перед її використанням. Задаючи тип даних, накладаємо деякі обмеження на величину, що зберігається: як велика вона може бути; скільки розрядів вона може містити і чи може вона містити дробову частину.

У VB є 11 вбудованих типів даних Таблиця 1.

Таблиця 1. Типи даних

Тип даних Розмір (байт) Розрядність (цифр) Діапазон
Boolean – логічний True(1) або False(0)
Integer – цілий (число із знаком) (Символ визначення типа за умовчанням: %) -32768 - 32767
Byte - Число без знаку від 0 до 255 0 - 255
Long – цілий подовжений (Символ визначення типа за умовчанням: &) -2147483648 -
Single – дійсний (Символ визначення типа за умовчанням: !) -3,402823E+38 - -1,401298E-45; 1,401298E-45 - 3,402823E+38
Double – дійсний подовжений (Символ визначення типа за умовчанням: #) -1,79769313486232E+308 - -4,94065645841247E-324; 4,94065645841247E-324 - 1,79769313485232E+308
Currency - дійсний з фіксованою десятковою комою (5-ть знаків) (Символ визначення типа за умовчанням: @) -922337203685477.5808 - 922337203685477.5807
Date- дати 01.01.100-31.1112.9999
String – строковий (Символ визначення типа за умовчанням: $) 1+1 От 0 до 65535 символів
Object – об'єктний Будь-який певний об'єкт
Array – набір(масив) Визначається кількістю і розміром елементів
Variant Визначається записаними даними Будь-який вбудований тип даних

При опису змінною вказівка типу даних може бути опущена. Тип змінної в такому разі визначається останнім символом імені змінної: @, #, %, &, ! або $ (Currency, Double, Integer, Long, Single або String, відповідно). Наприклад, оскільки символ $ є символом визначення типа для строкових даних, то змінна під ім'ям texts автоматично стає змінною типа "рядок символів". Надалі цей спеціальний символ вказівки типа дан­их може бути опушений, проте постійна присутність в імені змінної символу визначення типа нагадуватиме про те, до якого типу даних відноситься ця змінна, що допоможе уникнути помилок використання неспільних ти­пів даних.

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

Врахуйте також, що не можна використовувати в одній і тій же процедурі імена змінних, що відрізняються один від одного лише спеціальним символом визначення типа в кінці змінною. Наприклад, не допускається одночасне використання змінних var$ і var%. He допускається і явне оголошення змінній, що вже містить символ визначення типа в кінці імені, за допомогою описувача As (навіть якщо таке визначення не протиречіть звичайному застосуванню символу визначення типу). Так, наприклад, отримаємо повідомлення про помилку, спробувавши ввести будь-яке з наступних визначень:

Dim var1% As String

Dim var2% As Integer

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

Наприклад, наступний заголовний рядок процедури описує її параметри як змінні строкового типа:

Sub Example(strl As String, str2 As String, str3 As String)

Визначення типа даних повертаємого функцією значення завершує заголовний рядок функції, наприклад:

Function Find_String(strl As String) As Integer

-- описує повернене функцією значення, як змінну короткого цілого типа.

Аби програма працювала швидше і займала менше пам'яті, рекомендується використовувати, коли це можливо, конкретні типи змінних, а не універсальний тип Variant. На обробку змінних типа variant потрібна не лише додаткова пам'ять, але і додатковий час: потрібно з'ясувати, до якого конкретного типа даних належить така змінна у момент обробки, а також при необхідності виконати перетворення даних до потрібного типа. Може здатися, що в такому разі краще взагалі не використовувати подібні змінні. Це не так. Часто змінні типа variant просто необхідні: наприклад, у тому випадку, коли точно не упевнені, які саме дані будуть привласнені змінною.

5. Зона дії змінних і процедур

Всі процедури, функції, змінні і константи в VBA мають свою область застосування. Це означає, що вони можуть використовуватися лише у визначеному місці програмного коду — саме там, де вони описані. Наприклад, якщо змінна А описана за допомогою оператора Dim в телі процедури з ім'ям Proc1, саме ця процедура і є її зоною дії. Таким чином, якщо є інша процедура Ргос2, ви не можете використовувати в ній цю ж змінну. Якщо ви спробуєте зробити це, то або отримаєте повідомлення про помилку із-за використання неописаної змінної (в тому випадку, якщо використовується згадуваний ра­ніше оператор Option Explicit), або просто отримаєте іншу змінну — з тим же самим ім'ям, але ніяк не пов'язану з однойменною змінною з першої процедури.

Почнемо з визначення зони дії змінних. У якому місці програми і як саме описана змінна, визначає зону її дії і те, як довго вона "живе" в пам'яті і зберігає привласнене нею значення. Є три різні рівні при визначенні зони дії змінних:

· рівень процедури;

· рівень модуля;

· рівень проекту.

Схема видимості змінних відповідно до об'єктно-орієнтованої моделі контейнерів. Змінні, оголошені в зовнішньому контейнері, доступні процедурам, що входять в цей контейнер (рис1.).

Аби визначити змінну на рівні процедури, її опис поміщається в тіло даної процедури, і тоді це буде локальна змінна даної процедури.

Аби визначити змінну на рівні модуля і зробити її тим самим доступною для спільного використання у всіх процедурах даного модуля, слідує розмістити її опис в секції оголошень модуля — перед текстом яких-небудь про­цедур або функцій. При цьому може використовуватися і явний опис області дії (визначення): замість ключового слова Dim в цьому випадку використовується ключове слово Private. Немає жодної різниці в тому, який з цих описувачів використовується.

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

( Замечание )

Все сказане раніше відноситься і до опису, і до визначення зони дії констант, а також масивів.

Для змінних є ще один спосіб їх опису, що не змінює їх рівня, але що дозволяє зберегти значення змінної, описаної на рівні процедури, після завершення роботи даної процедури. Для цього слід використовувати описувач static, тим самим визначаючи її як статичну змінну. Така зміна зберігає виділене нею місце в пам'яті і своє значення навіть після заверше­ння процедури, в якій вона була описана і використана.

Проте статична змінна не може бути використана в інших про­цедурах. Змінюється лише час її життя, але не зона дії. Якщо здійсниться повторний виклик тієї ж самої процедури, в якій була описана статична змінна, то ця змінна збереже своє колишнє значення, яке вона мала у момент завершення роботи цієї процедури при попередньому виклику. Звичайні, не статичні, змінні всякий раз ініціалізувалися заново і набувають при вході в процедуру порожніх значень.

Перейдемо до обговорення зони дії процедур і функцій. Процедури і функції мають лише два рівні зони дії: рівень модуля і рівень про­екту. За умовчанням використовується рівень проекту. Таким чином, процедура або функція може бути викликана будь-якою іншою процедурою або функцією в цьому про­екті. При описі процедур і функцій на рівні проекту може також використовуватися необов'язкове ключове слово Public. Жодної дії на процедуру наявність або відсутність цього слова не надає.

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

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

рис. 1 Схема зони дії змінних

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

Змінна var2, var5, var4 визначена лише для процедури 2, 5, 4 відповідно, var3 – у всіх процедурах Модуля 2, var1 - у всіх процедурах Модуля 1, var визначена у всіх модулях і процедурах (рівень проекту).

Розглянемо приклад модуля, що починається таким чином:

Public A1 As String ‘ рівень проекту, змінна А1 символьного типу

Private A2 As Integer ‘ рівень модуля, змінна А2 типу – коротке ціле

Dim A3 As Single ‘ рівень модуля, змінна А2 типу – коротке дійсне число з плаваючою крапкою

Sub Proc1( ) ‘ оголошення початку процедури Proc1

Dim A4 As Integer ‘ рівень процедури, змінна А4 типу – коротке ціле

Static A5 As Integer ‘ рівень модуля, змінна А5 типу – коротке ціле

A1 = "Текстовая строка 1" ‘ текстове значення змінної А1

A2 = 2 ‘ присвоєння цілого числа (2) змінної А2

A3 = 3.14 ‘ присвоєння дійсного з плаваючою крапкою числа (3.14) змінної А3

A4 = A4 + 4 ‘ розрахунок значення змінної А4

A5 = A5 + 5 ‘ розрахунок значення змінної А5

MsgBox A4 ‘ вивід значення змінної А4 у вікні повідомлення

MsgBox A5 ‘ вивід значення змінної А5 у вікні повідомлення

Debug.Print "Proc1:", "A4="; A4, "A5="; A5 ‘вивід значення змінної А4,А5 з коментарями(текстом) у вікні відладки

End Sub ‘ оголошення кінця процедури Proc1

Sub Proc2( ) ‘ оголошення початку процедури Proc2

Proc1 ‘ виклик процедури Proc1з поточного модуля

MsgBox Al ‘ вивід значення змінної А4 у вікні повідомлення

MsgBox A2 ‘ вивід значення змінної А4 у вікні повідомлення

MsgBox A3 ‘ вивід значення змінної А4 у вікні повідомлення

MsgBox A4 ‘ вивід значення змінної А4 у вікні повідомлення

MsgBox A5 ‘ вивід значення змінної А4 у вікні повідомлення

Debug.Print "1/Proc2:", "A1="; A1, "A2="; A2, "A3="; A3, "A4="; A4, "A5="; A5

‘вивід значення змінних А1, А2, А3, А4 та А5 з коментарями(текстом) у вікні відладки

Proc1 ‘ виклик процедури Proc1з поточного модуля

Debug.Print "2/Proc2:", "A1="; A1, "A2="; A2, "A3="; A3, "A4="; A4, "A5="; A5

‘вивід значення змінних А1, А2, А3, А4 та А5 з коментарями(текстом) у вікні відладки

End Sub ‘ оголошення кінця процедури Proc2

В даному прикладі змінна Al визначена на рівні всього проекту (використано ключове слово Public), змінні А2 і A3 визначені на рівні модуля, зміна А4 — лише на рівні процедури Procl, а змінна А5 хоча і визначена у телі процедури Procl, але описана як статична змінна.

При запуску на виконання процедури Ргос2 станеться наступне: з цієї процедури буде у свою чергу викликана процедура Procl, яка привласнить значення всім п'яти змінним А1, А2, A3, А4 і А5, а потім покаже поточні значення змінних А4 і А5 у вікні повідомлення (MsgBox) та вікні відладки рис.1, яке включається у VBA View → Immediate Window (Debug.Print).

Proc1: A4= 4 A5= 5

1/Proc2: A1=Текстовая строка 1 A2= 2 A3= 3,14 A4= A5=

Proc1: A4= 4 A5= 10

2/Proc2: A1=Текстовая строка 1 A2= 2 A3= 3,14 A4= A5=

Рисунок 1. Результат роботи процедури Proc2, наведеного приклада програми

Після завершення цієї процедури будуть виведені поточні значення змінних А1 — А5 з процедури Ргос2. При цьому виявиться, що змінні А1 — А3 зберегли свої значення, оскільки вони описані на рівні модуля, а змінні А4 і А5 набувають порожніх значень, оскільки зоною дії цих змінних є процедури, в яких вони використовуються. Жодні зміни цих змінних усередині однієї з процедур не мають відношення до аналогічних змінних з дру­гої процедури — насправді це різні змінні, просто для них використовуються співпадаючі імена.

Потім відбувається ще один виклик процедури Procl, і вона знов починає змінювати і виводити на екран значення змінних А4 і А5. При цьому змінна А4 знов набуде значення 4, оскільки при новому виклику процедури для цієї змінної буде заново виділена пам'ять, і вона ініціалізує порожнім значенням. На відміну від А4, змінна А5, описана як статична, збереже своє колишнє значення від попереднього виклику цієї процедури, в результаті її значення при по­вторному виклику опиниться рівним 10.

Масиви

Масив — це змінна, в якій зберігається одночасно декілька значень однакового типа. Формальне визначення масиву таке: він є сукупністю однотипних індексованих змінних.

Кількість індексів, що використовуються у масиві також може бути різною. Найчастіше використовуються масиви з одним або двома індексами, рідше — з трьома, ще більша кількість індексів зустрічається украй рідко. У VBA допускається використовувати до 60 індексів. Про кількість індексів масиву зазвичай говорять як про розміри масиву. Масиви з одним індексом називають одновимірними, з двома — двовимірними і так далі. Масиви з великою кількістю вимірів можуть займати дуже великі об'єми пам'яті, тому слід бути обережними в їх вживанні.

Перш ніж використовувати масив, потрібно обов'язково оголосити його за допомогою опе­ратора Dim і вказати при цьому типи значень, що зберігаються в масиві. Всі значення в масиві зобов'язані належати до одного типа даних. Це обмеження на практиці можна обійти, використавши при оголошенні масиву тип Variant — в цьому випадку елементи масиву зможуть набувати значень різних типів. Синтаксис оператора оголошення масиву наступний:

Dim (, , ...) As ,

де вказані в дужках величини < розмір1>, < розмір2> задають розміри масиву — кількість індексів і максимально допустиме значення для кожного конкретного індексу. При цьому індексування елементів масиву за умовчанням починається з нуля. Наприклад,

Dim Array1(9) As Integer - визначає одновимірний масив з 10 елементів, що є змінними цілого типа, а оголошення

Dim Array2(4, 9) As Variant - визначає двовимірний масив із п’ятдесяти (5x10) елементів, змінними універсального типа variant, що є.

( Зауваження )

Як стандартне значення нижньої границі масиву (індексу) може використовуватися не лише нуль. Аби змінити це стандартне значення, потрібно скористатися оператором Option Base. Наприклад, якщо помістити в початок модуля оператора Option Base 1, то індексування елементів масивів за умовчанням починатиметься не з нуля, а з одиниці.

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

Dim ( То , ...) As

Наприклад,

DIM Sales(5) As Currency – за умовчанням індекс починається з 0 до 5 тобто 6 – елементів: Sales(0), Sales(1).Sales(5) типу Currency.

DIM AS(700 to 799) As Integer – містить 100 елементів типу Integer (AS(700), AS(701), AS(702),…, AS(799))

DIM CC(4, 1 to 3) As Single – масив 5х3 типа Single

DIM ZZ(3 to 23; 5 to 7) As Date – масив 21*3 типу Date

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

Dim Temperature (-14 То 0) As Single

При цьому, наприклад, Temperature(-2) відповідатиме позавчорашній темпе­ратурі, а для визначення потрібного індексу для дня, що цікавить, буде доста­тньо використовувати різницю дат.

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

При визначенні динамічного масиву в операторові Dim після імені масиву стоять лише порожні дужки і опис типа змінних. Кількість індексів і діапа­зон їх зміни не задається. Проте перш ніж використовувати масив, потрібно застосувати оператор ReDim, який задасть розмірність і діапазони зміни індексів динамічного масиву.

Синтаксис оголошення і визначення розмірів динамічного масиву такий:

Dim () As

ReDim (, ...)

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

Dim dArray() As Variant

ReDim dArray(1, 2)

dArray(0, 0) = 2

dArray(0, 1) = 3

k = dArray(0, 0) + dArray(0, 1)

ReDim dArray(k)

dArray (0) = "Строка!."

В даному прикладі масив dArray спочатку визначається як двовимірний масив з шести елементів, а потім — як одновимірний масив, причому верхня границя індексу задається значенням змінної k.

( Зауваження )

Аби визначити поточний нижню або верхню границю масиву, можна використовувати функції LBound і UBound, відповідно.

За умовчанням при зміні розмірів масиву йому заново виділяється пам'ять і поточні значення його елементів втрачаються. Аби не втратити поточні значення масиву при зміні його розмірів, використовується ключове слово Preserve. Наприклад, аби збільшити розмір масиву dArray на один елемент, не втративши значень існуючих елементів, можна таким чином:

ReDim Preserve dArray(UBound(dArray) + 1) ‘збільшити розмір масиву dArray на один елемент, де UBound(dArray) визначення найбільшого індексу існуючого масиву dArray()

Константи

Константа – це величина, яка не міняється в процесі виконання програми.

Синтаксис опису константи:

Const <ім'я_константи> As <тип> = <вираження>,

де — це будь-яке значення, або формула, що повертає значення, яке повинне використовуватися як константа.

Наприклад,

наступний оператор визначає цілу константу m_Len: Const m_Len% = 30

наступний оператор визначає константу PI (коротке дійсне з плаваючою крапкою):

Const PI As Single = 3,14159

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

Зона видимості константи така ж як і змінної, для однієї процедури (локальна), для всього модуля або для всіх модулів і процедур, - тобто глобальна константа.

( Порада )

Якщо ви збираєтеся використовувати у програмі які-небудь константи, то рекомендується дати цим константам осмислені імена і описати їх в самому початку модуля, а потім використовувати усюди лише іменовані константи. Це не лише робить програму зрозуміліше, але і простіше в супроводі і відладці. Частіше значення тієї або іншої константи потрібно змінити (хоч би на якийсь час відладки), і тоді досить поміняти лише одне значення в описі іменованої кон­станти. Якщо ж безпосереднє значення використовувалося прямо в тексті коду програми, то змінити всі входження цього значення набагато складніше.

Окрім описуваних користувачем констант, існують ще зумовлені вбудовані константи, які включаються в тексти програм без попереднього опису. Відомості про зумовлені вбудовані константи, що використовуються для різних об'єктів додатків Microsoft Office і Visual Basic, можна знайти в довідці — у розділах опису властивостей об'єктів (рідше — в розділах опису ме­тодов). При іменуванні вбудованих констант використовується стандартне узгодження, що дозволяє визначити, до об'єктів якого застосування відноситься ця кон­станта. Наприклад, вбудовані константи, що відносяться до об'єктів Access, начинаються з префікса ас, до об'єктів Excel — з префікса xl, до об'єктів Word, — з префікса wd, та до об'єктів VBA, — з префікса vb.

VB і додатки Microsoft Office мають чималий список вбудованих констант, вживання яких не вимагає оголошення.

Наприклад, для відображення повного списку констант в Excel: використовується Object Browser, вибравши бібліотеку Excel і вказавши об'єкт Constants (всі константи починаються на xl), або вибравши бібліотеку VB for Applications і вказавши об'єкт Constants, можна побачити всі константи VB (вони починаються з vb).

8. Перетворення типів

Інколи може знадобитися перетворювати змінні одного типа в змінні іншого типа. Для цього в VB існує набір функцій з назвами, які утворюються таким чином: літера «С»+(повне або скорочене ім'я типа) (див. таблиця 2).

Таблиця 2. Перетворення типів змінних

Функція Призначення
CBool(х) Перетворення змінної х до логічного типу
CCur(х) Перетворення змінної х до типу Currency
CDate(х) Перетворення змінної х до типу Date
CLng(х) Перетворення змінної х до типу Long
CDbl(х) Перетворення змінної х до типу Double
CInt(х) Перетворення змінної х до типу Integer
CSng(х) Перетворення змінної х до типу Single
CStr(х) Перетворення змінної х до типу String
CVar(х) Перетворення змінної х до типу Variant

Окрім цих функцій, з метою перетворень різних типів даних використовується математичні функції Int() і Fix(), а також строкові функції Str(), Val() і Format().


Контрольні завдання по темі

1. Теоретичні питання

Тести

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


Оператори привласнення і вбудовані функції

Работы которые могут быть Вам интерессными glava-7-samij-blizkij-vrag-8-glava.html

glava-7-samij-blizkij-vrag-9-glava.html

glava-7-sbrasivanie-karmi-nirdzhara.html

glava-7-semioticheskij-analiz-reklamnogo-soobsheniya.html

glava-7-shizoidnij-autisticheskij-harakter.html

glava-7-simvolnie-vichisleniya.html

glava-7-sindrom-umnoj-mashi.html

glava-7-sistema-gosudarstvennih-ekspertnih-uchrezhdenij-rossii.html

glava-7-sistematicheskij-samoanaliz-predvaritelnie-zamechaniya.html

glava-7-sluchajnaya-vstrecha.html

glava-7-smert-ili-voznesenie.html

glava-7-sni-i-ih-tolkovanie.html

glava-7-snovidenie-i-stalking-10-glava.html

glava-7-snovidenie-i-stalking-12-glava.html

glava-7-snovidenie-i-stalking-13-glava.html

glava-7-snovidenie-i-stalking-4-glava.html

glava-7-snovidenie-i-stalking-7-glava.html

glava-7-snovidenie-i-stalking-8-glava.html

glava-7-snovidenie-i-stalking-9-glava.html

glava-7-socialnaya-politika-i-ohrana-okruzhayushej-sredi.html

glava-7-socialnaya-pomosh-grazhdan.html

© domain.tld 2017. Design by Design by toptodoc.ru


Автор:

Дата:

Каталог: Образовательный документ