Публічна змінна 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, який можна завантажити. Ви також можете ознайомитися з іншими запропонованими нами статтями -

  1. Глобальні змінні VBA
  2. Одна таблиця змінних даних в Excel
  3. VBA FileSystemObject (FSO)
  4. Дві таблиці змінних даних в Excel

Категорія: