В одному рядку програмного коду можна оголосити і кілька змінних. Ключове слово Dim друкується при цьому тільки один раз, а змінні розділяються комами.
Dim intA As Integer, intD As Integer, intL As Integer
Змішувати різні типи даних теж дозволяється:
Dim curNetWorth As Currency, datSecondTuesday As Date
Dim strX, strY, strZ As String
strX і strY інтерпретуються як змінні типу Variant, а не як рядкові змінні.
Розміщення інформації в змінних
Після того як змінна оголошена, першим кроком в її використанні зазвичай буває наповнення її інформацією (перше розміщення інформації в змінної називається ініціалізацією змінної). Щоб помістити інформацію в змінну, потрібно привласнити значення інформації цієї змінної. Як тільки знадобиться, можна замінити дані, що зберігаються в змінної, присвоївши їй інше значення.
Присвоєння значень
Значення змінним присвоюються за допомогою звичайного знака рівності. Наприклад, щоб помістити число 3 в змінну з ім'ям intC, надрукуйте intC = 3
У VBA оператор присвоювання є пов'язану знаком рівності конструкцію, зі змінною зліва від нього і виразом, що визначає значення змінної, праворуч. У наведеному вище прикладі вираз являє собою просто число 3. Такі явно зазначені значення називаються буквальними значеннями. (Вирази будуть обговорюватися нижче, в розділі Виражений-і-я.)
Погляньте на наступний оператор присвоювання:
strQuot e = Не питай, що я зробив для країни - _
запитай про те, що країна зробила для мене.
В даному випадку оператор привласнює текст праворуч від знака рівності змінної strQuot e. Як і раніше, інформація у вхідному в цей оператор вираженні являє собою буквальні значення - реальний текст, що поміщається в змінну. Але оператор розбитий на два рядки, тому і текстове вираження розбите на дві окремі рядки. Знак (амперсанд) дає вказівку VBA з'єднати ці рядки разом.
Тут я просто намагаюся показати, що вирази часто мають кілька компонентів.
Але незалежно від того, з якого числа компонентів складається вираз, VBA спочатку обчислює результуюче значення, а вже потім привласнює це значення змінної.
Ясно, що до моменту реального виконання оператора присвоювання його твердження не є фактом. В математиці рівністю 2 + 2 = 4 насправді стверджується, що значення ліворуч від знака рівності дорівнює значенню справа.
У VBA оператор присвоювання змушує змінну бути дорівнює значенню виразу. Надалі новий оператор присвоювання може змінити значення цієї змінної в будь-який час.
Використання змінних в операторах присвоювання
Можна привласнювати змінним не тільки буквальні значення - точно так само можна привласнювати і значення, які визначаються іншими змінними. В операторі curSalePrice = curCost * sngMargin змінної curSalePrice присвоюється значення, яке дорівнює добутку змінних curCost і sngMargin. В даному випадку вираз складається з змінних, а не з буквальних значень. VBA обчислює результат на основі значень, що зберігаються в цих змінних. (До речі, в повній відповідності з рекомендованими в главі 6 угодами щодо вибору імен, curSalePrice і curCost є змінними типу Currency.)
Використання функцій в операторах присвоювання
Оскільки функції і створювані вами процедури типу Function повертають значення, їх теж можна використовувати в операторах присвоювання. наприклад:
ctrFavorite = InputBox (Хто сьогодні фаворит?)
В даному випадку використовується функція VBA Input Box, яка відображає на екрані невелике діалогове вікно з вказаним повідомленням і полем для введення відповіді користувачем. Ця відповідь і буде повертається функцією значенням, що представляє собою рядок тексту (функція Input Box розглядається докладно в главі 11).
Виражений-й-я
* Змінні (наприклад, bytMonth або boolWinter);
* Буквальні значення (наприклад, 1234 або Це тільки приклад);
* Константи (вони призначені для зберігання буквальних значень і розглядають; ся в розділі 'Робота з постійними значеннями);
* Функції VBA (наприклад, Input Box () або Sqr ());
* Процедури типу Function.
Якщо у виразі не менш двох таких елементів, то вони повинні бути пов'язані або знаками операцій (до таких належить, наприклад, знак +), або функціями і процедурами типу Function, вкладеними всередину інших функцій і процедур типу Function.
Зверніть увагу на те, що якщо вираз складається з декількох компонентів, то кожен з них теж буде вираженням зі своїм власним значенням.
Що містить змінна перед тим, як їй присвоюється значення?
Під час виконання процедури VBA виділяє для кожної змінної з цієї процедури простір в пам'яті і приписує змінної початкове значення; що означає, що в змінної нічого не зберігається. Найчастіше перед використанням змінної в виразах ви привласнюєте їй потрібне вам значення, але цілком допустимо, а часом і вигідно, використовувати змінну до того, як ви будете впевнені, що вона містить заданий вами значення.
Припустимо, що в програмі є процедура, яка повинна виконуватися тільки за певних умов. Припустимо також, що в цій процедурі повинно присвоюватися значення однієї із змінних програми. У такій ситуації, якщо в іншій процедурі потрібно з'ясувати, виконувалася чи перша процедура, то це можна зробити, з'ясувавши, чи зберігається в даній змінної значення.
Ось які значення зберігаються в змінних перед тим, як ви їм привласнюєте свої значення.
Ніщо (спеціальне значення, яке вказує на те, що змінної не присвоєно ніякого посилання на об'єкт)
Робота з постійними значеннями
Const cstrPetsName As String = "Пушок"
Const cboolUp As Boolean = True
Зверніть увагу, що імена оголошених мною констант починаються з малої літери "с" (що означає скорочення від constant - константа). Таким чином, на ім'я відразу видно, що це константа, а не змінна. Якщо вас цей префікс не влаштовує, виберіть для своїх констант інший, більш відповідний вам.
Ви можете взяти приклад VBA і Visual Basic і префікс, що відповідає вашому імені, або префікс, який міститься в імені вашого VBA-проекту. VBA і Visual Basic ідентифікують константи за допомогою префікса vb - наприклад vbBl ue (константа, що представляє числовий код для синього кольору, а саме 16711680) або vbKeyTab (константа, що представляє числовий код клавіші
До речі, константи, певні VBA або VBA-додатком, теж можна використовувати в своїх програмах. Інформацію про ці зарезервованих константи можна отримати з довідкової системи або у вікні оглядача об'єктів (див. Розділ 5).