vba variables option explicit vba
Цей підручник пояснює, як оголошувати та використовувати змінні VBA. Також дізнайтеся про явні параметри, область змінних, статичні та постійні змінні:
В комп’ютері всі значення даних зберігаються в пам’яті або на комп’ютерному сховищі. Щоб отримати доступ до цих значень, вам потрібно вказати ім'я, пов'язане з цим значенням, яке в мовах програмування називається змінною.
У цьому підручнику ми дізнаємось, як оголошувати та визначати змінну разом із різними типами областей змінних, а також детально досліджувати статичні та постійні змінні.
=> Перегляньте тут, щоб побачити A-Z навчальних посібників VBA
Що ви дізнаєтесь:
Змінні VBA
Змінні подібні до заповнювачів для значень у пам’яті комп’ютера. Змінні можуть містити різні різновиди значень, і ці значення можуть змінюватися під час виконання коду.
Кожна змінна матиме ім'я, яке використовується для доступу до значення. VBA має певні обмеження щодо вибору імені.
Нижче наведено перелік обмежень:
- Ім'я змінної не може містити більше 255 символів.
- Ім'я змінної не може починатися з числа.
- Ви не можете починати зі спеціальних символів, таких як!, @, &,., # Або не мати пробілів.
- Ключові слова не розглядаються як ім'я змінної.
Компілятор видасть помилку, якщо ви порушите ці обмеження
Приклад:
Дійсні назви змінних: varName, Result12, First_Number
Недійсні імена змінних: 123abc, #number, Sub, abc.123
Перше число (пробіли між словами не допускаються)
Оголошення змінної VBA
Нам потрібно використовувати Жоден ключове слово для оголошення змінної. При оголошенні змінної є 2 розділи. 1вул- ім'я змінної та 2йце тип значення, яке зберігається у змінній, яка називається Тип даних.
Синтаксис: Dim VariableName As DataType
Приклад:
- Затемнити MyAge як ціле число
- Затемнити My_Percentage як подвійний
- Повна ім'я як рядок
Тут ви прямо говорите компілятору, що моя змінна повинна зберігати лише ці типи даних, і VBA обов’язково видасть помилку невідповідності типу компілятора, коли значення, визначене для змінної, не відповідає типу даних.
Приклад:
Sub example1() Dim Total_Marks As Integer Total_Marks = “” MsgBox Total_Marks End Sub
Але якщо ви не впевнені у типі даних змінної, то VBA дозволяє пропустити тип даних. Зазначений нижче синтаксис також є дійсним.
Ім'я незмінної змінної
Коли ви не оголошуєте тип даних змінної, VBA розглядає її як тип даних Variant, і вона зобов'язана приймати будь-який тип цілих чисел даних, таких як ціле число, рядок, робоча книга тощо. У тій же програмі варіативні змінні також можуть приймати значення рядка, ціле значення та будь-який інший тип.
Sub VarientVariable() Dim Total_Marks Total_Marks = '' MsgBox Total_Marks Total_Marks = 544.33 MsgBox Total_Marks Total_Marks = 522 MsgBox Total_Marks End Sub
Оскільки Total_Marks є варіантною змінною, на відміну від попереднього коду, компілятор не видасть жодної помилки, як показано нижче.
Примітка: Пам'ятайте, що VBA дозволяє використовувати змінну без фактичного оголошення.
Наведений нижче приклад коду також дає належний результат. У цьому випадку VBA автоматично обробляє змінну як тип даних Variant. Це називається неявною декларацією.
Sub VariantVariable() Total_Marks = 444 MsgBox Total_Marks End Sub
Переваги оголошення змінної
- Простота налагодження: Доброю практикою є оголошення змінної перед її використанням. Це дає нам більш раннє розуміння таких помилок, як невідповідність типу та помилки друкарської помилки, тим самим зменшуючи ризик відхилення від логіки програми.
- Краща читабельність: У команді буде багато людей, які переглядають код, і оголошення змінної допоможе кожному з типом значень, які передбачається приймати змінна, а також допоможе користувачам ввести відповідні вхідні значення під час виконання програми.
- Місце для зберігання: Якщо ви не оголошуєте змінну, то VBA розглядає її як тип даних Variant, який займає найбільший простір у пам'яті (від 16 до 22 байт) порівняно з іншими типами даних. Наприклад, якщо ви використовуєте змінну типу Byte, яка займає всього 1 байт, і якщо ви не заявите, VBA в кінцевому підсумку зарезервує простір у 16 байт, витрачаючи тим самим пам'ять.
Варіант Явний
Щоб гарантувати, що всі змінні явно оголошені, перед використанням ми повинні використовувати оператор Option Explicit. Його слід використовувати на початку будь-якої процедури в цьому модулі.
Давайте подивимось приклад, який не використовує явне твердження Option.
Sub example3() Dim First_name As String First_name = ' abs' MsgBox Firt_Name End Sub
Виконайте код (натисніть F5 або натисніть кнопку запуску на панелі інструментів), і в підсумку ви отримаєте порожнє поле повідомлення.
Незважаючи на те, що ви оголосили змінну, ви потрапили в порожнє поле результатів через помилку в Msgbox Firt_Name. Явна опція допоможе нам усунути такі помилки.
Давайте переробимо той самий код, використовуючи Option Explicit. Введіть Option Explicit перед початком процедури.
Option Explicit Sub VarientVariable() Dim First_name As String First_name = ' abs' MsgBox Firt_Name End Sub
Тепер, якщо ви виконаєте код (натисніть F5 або кнопку Виконати на панелі інструментів), і в підсумку ви отримаєте помилку компілятора.
Ви можете додати VBA Варіант Явний автоматично.
У редакторі VB Перейдіть до Інструменти -> Параметри -> Виберіть “Вимагати декларацію змінних”.
Зараз Варіант Явний буде додаватися автоматично кожного разу, коли ви вставляєте новий модуль або записуєте новий макрос.
Примітка: Явний варіант не буде доданий до існуючого коду VBA. Вам потрібно додати його вручну, якщо потрібно.
Присвоєння значення змінній
Значення можна присвоїти змінним, використовуючи дорівнює символу (=). Якщо ви посилаєтесь на клітинку в Excel, то вам потрібно використовувати функції діапазону.
Зверніться до коду нижче.
Sub varValue() Dim var1 As Integer var1 = 10 Range('C1:C14').Value = var1 MsgBox var1 End Sub
У наведеному вище прикладі var1 - це змінна, яка зберігає значення 10 безпосередньо за допомогою (=), а функція Range допоможе ввести значення var1, яке дорівнює 10, у клітинку Excel від C1 до C14.
Сфера дії змінної
Кожна змінна в програмі матиме визначений обсяг. Цей обсяг повідомляє програмі області, в яких видно змінну, тобто модуль або функцію, які можуть або не можуть використовувати змінну.
VBA має 3 типи сфери дії, визначені для змінної.
- Обсяг на рівні процедури
- Приватна область на рівні модуля
- Загальнодоступний обсяг на рівні модуля
Сфера дії на рівні процедури
Змінні, визначені в процедурі, тобто в допоміжній або функціональній функції, зможуть використовувати їх лише. Це не видно для будь-якої іншої процедури.
Приклад:
Option Explicit Sub ProcScope() Dim msg As String vartext = 'Varible is visible only inside this Sub' MsgBox vartext End Sub Sub VarNotVisible() MsgBox vartext End Sub
Коли ви виконуєте наведений вище код, для першого Sub msgbox поверне належний результат, але для другого Sub буде видано помилку компілятора. Оскільки вершинна змінна видна лише для 1вулсуб, а не для 2й. Оскільки ми використовували явний Option, ми отримаємо помилку компілятора за не визначення змінних у 2йпід.


Приватний обсяг на рівні модуля
Ці змінні доступні для всіх процедур у визначеному модулі. За замовчуванням змінні, оголошені за допомогою Жоден розглядаються як приватні. Але рекомендується додати приватний для кращої читабельності.
Давайте розглянемо той самий приклад, але ми оголосимо змінну поза процедурою.
Option Explicit Private vartext As String ‘ Dim vartext As String can also be used Sub PrivateScope() vartext = 'Varible is visible to all procedures' MsgBox vartext, ,”Result from Sub1” End Sub Sub VarIsVisible() MsgBox vartext, ,”Result from Sub2” End Sub
Після виконання ви побачите, що обидві процедури повернуть належні результати без помилок. Для чіткого розуміння ми додали правильний заголовок у поле msgbox.
Загальнодоступний обсяг на рівні модуля
Ці типи змінних видимі для всіх процедур та всіх модулів проекту. Вставте 2 модулі. (Клацніть правою кнопкою миші на аркуші та вставте -> модулі).
Введіть код нижче в одному модулі.
Option Explicit Public vartext As String Sub PrivateScope() vartext = 'Varible is visible to all modules' MsgBoxvartext, , 'Result from Sub1' End Sub
Введіть код нижче у 2-му модулі.
Option Explicit Sub VarIsVisible() MsgBoxvartext, , 'Result from Sub2' End Sub
Результати наведені нижче
Давайте розглянемо практичний приклад і краще зрозуміємо всю сферу застосування.
Вкладений довідковий файл для вищевказаного коду.
Статична змінна
Зазвичай значення змінної зберігається лише від виклику процедури до кінця процедури. Він не зберігає значення після закінчення процедури.
Наприклад , у наведеному вище коді значення firstNo та secondNo видаляються, як тільки процедура закінчується, наступного разу, якщо ви виконуєте код, firstNo та secondNo отримують те саме значення, що визначено в коді.
Але статичні змінні - це ті, які збережуть значення змінної навіть після виконання. Статична змінна допускається лише всередині допоміжної функції або функції.
Розглянемо наведений нижче код із нестатичною змінною.
Option Explicit Sub staticVariable() Dim count As Integer count = count + 1 Debug.Print count End Sub
Кожного разу, коли ти натискаєш F5, ти отримаєш лише 1.
Тепер оголосимо змінну як статичну.
Option Explicit Sub staticVariable() Static count As Integer count = count + 1 Debug.Print count End Sub
Кожного разу, коли ви виконуєте код (F5), результат матиме збільшене значення для підрахунку, як 1,2,3 тощо, оскільки статична змінна зберегла своє значення.
Примітка: Статична змінна зберігатиме значення, доки ви не натиснете кнопку Скинути на панелі інструментів або не закриєте книгу.
Постійна змінна
Як вказує назва, значення цих змінних не може бути змінено під час виконання програми. Після оголошення константи її неможливо змінити або призначити нове значення.
Оголошення константи може бути зроблено в рамках процедури або на рівні модуля (перш за все процедури).
Option Explicit Sub constantVariable() Const SpeedLimitOfcar As String = '90kmph' Dim myCarSpeed As String myCarSpeed = '70kmph' If myCarSpeed > SpeedLimitOfcar Then MsgBox 'overspeed: Reduce the speed' Else MsgBox 'Within the limit: Always drive below : ' & SpeedLimitOfcar End If End Sub
Якщо ви спробуєте змінити значення константи, буде видано помилку компіляції.
Option Explicit Sub ChangeConstantVariable() Const SpeedLimitOfcar As Integer = 90 SpeedLimitOfcar = SpeedLimitOfcar + 10 MsgBox SpeedLimitOfcar End Sub
Поширені запитання
Q # 1) Як встановити загальнодоступну змінну у VBA?
Відповідь: Відкриті змінні оголошуються перед початком процедури. Ключове слово public слід використовувати під час оголошення змінної.
Загальнодоступні Позначки як цілі
Q # 2) Який тип змінних не можна оголосити поза процедурою?
Відповідь: Статичні змінні не можуть бути оголошені поза процедурою у VBA, і ви отримаєте помилку компіляції.
Q # 3) Як оголосити змінну у VBA?
Відповідь: Ключове слово Dim використовується для оголошення змінної. Dim означає «Вимір».
Ім'я змінної неясного як тип даних
Q # 4) Як присвоїти значення змінної клітинці у VBA?
Відповідь: Ви можете використовувати функцію Range.
var1 = 10
Діапазон (“C1: C14”). Значення = var1
Q # 5) Що таке змінні у VBA?
Відповідь: Змінні - це як заповнювачі для значень у пам’яті комп’ютера. Змінні можуть містити різні різновиди значень, і ці значення можуть змінюватися під час виконання коду. Кожна змінна повинна мати ім'я, використовуючи ім'я змінної, комп'ютер отримає значення, призначене для цієї змінної.
Q # 6) Чи потрібно оголошувати змінну у VBA?
Відповідь: Декларація є необов’язковою у VBA. Якщо ви не оголошуєте змінну і не використовуєте її безпосередньо в процедурі, це називається неявною декларацією. Щоб уникнути помилок у коді та для кращої читабельності, рекомендується явно оголосити змінну.
Q # 7) Як оголосити кілька змінних у VBA?
Відповідь: Ви можете оголосити кілька змінних в одному операторі оголошення. Вам просто потрібно вказати ім'я змінної, розділене комами в одному реченні As.
youtube to mp4 converter online free no download
Вимкнути FirstNo, SecondNo як ціле число
Ви також можете вказати різні змінні в одному операторі декларації. Кожна змінна буде приймати тип даних, зазначений у реченні As, після частини її імені змінної.
Dim a, b як одиничний, c, d як подвійний, e як ціле число, f як рядок
Q # 8) Коли у VBA не буде різниці між неяскравим та приватним?
Відповідь: Якщо ви оголошуєте приватну область дії на рівні модуля, тоді немає різниці між оголошенням змінної як неяскравої або приватної. За замовчуванням змінні, оголошені за допомогою Жоден розглядаються як приватні. Але рекомендується додати приватний для кращої читабельності.
Q # 9) Що таке змінна рівня модуля?
Відповідь: Змінні на рівні модуля можуть бути приватними або загальнодоступними. Приватні змінні доступні для всіх процедур у цьому модулі і не видимі для будь-якого іншого модуля. Відкриті змінні видимі для всіх процедур у всіх модулях проекту.
Висновок
Змінна має вирішальне значення в будь-якій мові програмування. У цьому посібнику ми побачили, що таке змінні, як оголосити та використовувати їх у програмі. Ми також дослідили метод Option Explicit, який змушує реалізувати явне оголошення.
Обговорювались різні типи області змінних, які допомагають користувачам визначити, які частини коду можна використовувати змінну. Ми вивчили використання статичних змінних, що допомагає зберегти значення змінної та постійних змінних, які допомагають підтримувати значення змінної незмінним.
=> Завітайте сюди, щоб дізнатися VBA з нуля
Рекомендована література
- Підручник з VBA - Вступ до VBA в
- Масив та методи масивів Excel VBA з прикладами
- Типи даних VBA - числові та нечислові типи даних у VBA
- Змінні Python
- Змінні в C ++
- Змінні Java та їх типи на прикладах
- Типи даних і змінні C # з прикладами
- Змінні VBScript: Як оголосити та використовувати змінні - VBScript Dim