Публічна змінна VBA Excel
Змінна - важлива частина життя програмістів. Кожен раз, коли програміст кодує, він створює певний набір змінних. Змінна може розглядатися як ваучер, який ми часто використовуємо на сайтах інтернет-магазинів, таких як Flipkart, Amazon та ін., Який дозволяє отримати певну знижку на певні продукти наперед. Те саме стосується змінної. Змінна може граматично бути визначена як заповнювач, який зберігає деяку пам'ять у системі з певним іменем. Цей простір пам'яті може бути використаний у будь-який час з тим самим іменем.
Змінна VBA розглядається як публічна змінна за двох обставин. Коли -
- Його можна використовувати разом з усіма кодами в модулі.
- Його можна використовувати уздовж усіх кодів для різних модулів.
У простому плані змінна вважається загальнодоступною змінною, коли її можна використовувати в будь-якому коді та в будь-якому модулі. У цій статті ми збираємось побачити, як можна визначити змінну. Як це можна визначити публічно в межах VBA.
Перш ніж запустити концепцію публічної змінної VBA, ми повинні зрозуміти, що змінні, які використовуються в одній підпроцедурі, не можуть бути використані в іншій підпроцедурі (саме там ми почали відчувати потребу мати публічну змінну який можна використовувати в будь-якому модулі, будь-якій під-процедурі).
Припустимо, ми створимо підпроцедуру в VBA і визначимо там нову змінну за допомогою оператора Dim.
У цьому коді var1 - змінна, визначена в підпроцесі Ex_Var .
Тепер я визначу нову під-процедуру, і іронія полягає в тому, що я не можу використовувати попередньо визначений var1 у цій під-процедурі. Дивіться скріншот нижче, де я намагаюся призначити значення 10 для var1 в рамках різних підпроцедур. Дивіться повідомлення про помилку також після запуску коду.
Декларуючи змінні в рамках підпроцедур, ми обмежуємо їх використання тільки в цій під-процедурі. Це є головним недоліком декларування змінної в рамках підпроцедури.
Це призводить до нової теорії, яка включає оголошення змінної за межами підпроцедур. Це допоможе програмісту широко використовувати визначені змінні з різними підпроцедурами.
Як оголосити загальнодоступні змінні у VBA?
Давайте розглянемо кілька прикладів для оголошення публічних змінних у VBA.
Ви можете завантажити цей шаблон Excel для загальнодоступних змінних VBA тут - Шаблон Excel для загальних змінних VBAПриклад №1 - Визначення публічно змінної в межах модуля
Припустимо, ми хочемо визначити змінну, до якої можна отримати доступ відкрито для всіх кодів у межах одного модуля. Ми можемо це зробити. Виконайте наведені нижче дії:
Крок 1. Відкрийте редактор Visual Basic (VBE), натиснувши Alt + F11 або натиснувши кнопку Visual Basic на вкладці Developers в Excel. Виберіть вкладку Вставка, перейдіть до Модулі та натисніть на неї. Він додасть новий модуль у VBE, над яким можна працювати.
Крок 2. У новоствореному модулі додайте команду Option Explicit на початку вашого коду VBA (перед створенням будь-якої змінної). Опція Явна допоможе вам, якщо є якісь помилки під час використання визначеної змінної. Якщо використана змінна не визначена в системі, ця опція видає повідомлення про помилку, вказуючи, що змінна не визначена.
Код:
Варіант явний
Крок 3: Використовуйте оператор Dim для створення нової змінної з назвою my_name з типом даних як String.
Код:
Варіант Явний Dim my_name As String
Якщо ви можете звернути увагу, ми вказали цю змінну чітко. Це означає, що вона не є частиною конкретної підпроцедури. Що автоматично робить цю змінну доступною для всіх кодів у створеному модулі (Module1). Це називається визначення загальнодоступної змінної в модулі. Ця змінна може бути використана в будь-якому місці в декількох підпроцедурах в межах одного модуля.
Припустимо, наведений нижче код, я присвоїв значення змінній my_name як "Lalit Salunkhe".
Код:
Варіант Явний Dim my_name As String Sub Ex_1 () my_name = "Lalit Salunkhe" MsgBox "Мене звуть:" & my_name End Sub
Якщо я запускаю цей код, я побачу вікно повідомлень, як показано на скріншоті нижче:
Ми також можемо використовувати цю змінну в різних підпрограмах в межах одного модуля. Дивіться скріншот, наведений нижче:
Код:
Варіант Явний Dim my_name As String Sub Ex_1 () my_name = "Lalit Salunkhe" MsgBox "Мене звуть:" & my_name End Sub Sub Ex_2 () Dim my_age As Integer my_name = "Lalit Salunkhe" my_age = 28 MsgBox "Мене звуть: "& my_name &"; Мій вік: "& my_age End Sub
Див. Підрозділ Ex_2 Він має нову змінну, визначену my_age. Я використовував my_name, щоб додати своє ім'я та my_age, щоб додати поточний вік мого. Ви можете бачити, що my_name все ще доступний під час другої під-процедури. Щойно я запускаю цей код, ми можемо отримати висновок у вигляді повідомлення, показаного нижче:
Ось так ми можемо публічно визначити змінну в межах модуля.
Приклад №2 - Визначення змінної, публічно розміщеної у всіх модулях
Для досягнення цього подвигу вам потрібно використовувати ключові слова як Public або Global замість Dim, що встановлює змінну як загальну для всіх модулів, де б ви не працювали.
Крок 1: Створіть новий модуль. Перейдіть на вкладку Вставка, натисніть на Модуль, щоб додати новий модуль під VBE.
Крок 2: Додайте опцію, явну в модулі.
Код:
Варіант явний
Крок 3: Визначте нову змінну з назвою var1 та var2 як ціле число. Але цього разу, використовуючи публічну заяву замість Dim (яку ми використовували раніше).
Код:
Варіант Явний публічний var1 Як Integer Public var2 Як Integer
Крок 4: Тепер ці дві змінні можна використовувати в декількох модулях, якщо вони створені під одним і тим же VBE. Дивіться приклад, наведений нижче:
Код:
Варіант Явний публічний var1 Як Integer Public var2 Як Integer Sub Ex_3 () var1 = 10 var2 = 100 MsgBox "Значенням для var1 є:" & var1 & Chr (13) & "Значення для var2 є:" & var2 End Sub
Ми призначили значення обом змінним за допомогою функції MsgBox, намагаючись відобразити значення для цих двох змінних.
Крок 5: Запустіть код, натиснувши клавішу F5 або натиснувши кнопку Play, ви побачите вихід, як показано нижче:
Крок 6: Ми будемо використовувати ті самі змінні в Module1, які ми використовували в першому прикладі, і спробуємо з'ясувати, доступні чи змінні там.
Код:
Варіант Явний Dim my_name As String Sub Ex_1 () my_name = "Lalit Salunkhe" MsgBox "Мене звуть:" & my_name End Sub Sub Ex_2 () Dim my_age As Integer my_name = "Lalit Salunkhe" my_age = 28 MsgBox "Мене звуть: "& my_name &"; Мій вік: "& my_age End Sub Sub Ex_public () var1 = 1000 var2 = 999 MsgBox" Значення для var1 є: "& var1 & Chr (13) &" Значення для var2 є: "& var2 Кінець Під
Якщо ви могли бачити знімок екрана вище, ми використовували той самий набір змінних, визначений у Module2, і мають значення, такі як 1000 та 999 відповідно. Ми використовуємо функцію MsgBox для представлення значень цих двох змінних відповідно. Запустіть код, і ви побачите вихід, як показано нижче:
Ось як змінна може бути публічно використана в межах модуля та в межах модулів.
Що потрібно пам’ятати
- Завжди бажано чітко визначати змінні у VBA. Так що вони не обмежуються під-процедурою, яку вони визначають.
- Ви можете призначити загальнодоступну змінну двома способами: один у модулі, використовуючи звичайний оператор Dim, і другий у всіх модулях, присутніх у VBE, використовуючи будь-який оператор Public або Global.
Рекомендовані статті
Це посібник із загальнодоступної змінної VBA. Тут ми обговорюємо, як оголосити загальну змінну в Excel за допомогою коду VBA у excel разом із практичними прикладами та шаблоном Excel, який можна завантажити. Ви також можете ознайомитися з іншими запропонованими нами статтями -
- Глобальні змінні VBA
- Одна таблиця змінних даних в Excel
- VBA FileSystemObject (FSO)
- Дві таблиці змінних даних в Excel