Открытая переменная Excel VBA

Переменная является важной частью жизни программистов. Каждый раз, когда программист кодирует, он создает некоторый набор переменных. Переменную можно рассматривать как ваучер, который мы часто используем на сайтах онлайн-покупок, таких как Flipkart, Amazon и т. Д., Который позволяет получить определенную скидку на определенные товары заранее. То же самое в случае с переменной. Переменная может быть грамматически определена как заполнитель, который резервирует некоторую память в системе с определенным именем. Это пространство памяти может быть использовано в любое время с тем же именем.

Переменная VBA считается общедоступной переменной в двух случаях. Когда -

  • Он может использоваться вместе со всеми кодами в модуле.
  • Он может использоваться во всех кодах для разных модулей.

С точки зрения непрофессионала, переменная рассматривается как общедоступная переменная, когда она может использоваться в любом коде и в любом модуле. В этой статье мы увидим, как можно определить переменную. Как это можно определить публично в рамках VBA.

Прежде чем начать концепцию VBA Public Variable, мы должны понять, что переменные, которые используются в одной подпроцедуре, не могут использоваться в другой подпроцедуре (именно здесь мы начали чувствовать необходимость наличия общедоступной переменной который может использоваться в любом модуле, любой подпроцедуре).

Предположим, что мы создаем подпроцедуру в VBA и определяем новую переменную там, используя оператор Dim.

В этом коде var1 - это переменная, определенная в подпроцедуре Ex_Var .

Теперь я определю новую подпроцедуру, ирония в том, что я не могу использовать ранее определенную var1 в этой подпроцедуре . Смотрите скриншот ниже, где я пытаюсь присвоить значение 10 переменной var1 в рамках другой подпроцедуры. См. Также сообщение об ошибке после запуска кода.

Объявляя переменные в подпроцедурах, мы ограничиваем их использование только этой подпроцедурой. Это главный недостаток объявления переменной в подпроцедуре.

Это приводит к новой теории, которая включает объявление переменных вне подпроцедур. Это поможет программисту широко использовать определенные переменные в различных подпроцедурах.

Как объявить публичные переменные в VBA?

Давайте рассмотрим несколько примеров объявления открытых переменных в VBA.

Вы можете скачать этот шаблон VBA Public Variables Excel здесь - Шаблон VBA Public Variables Excel

Пример № 1 - Публичное определение переменной в модуле

Предположим, мы хотим определить переменную, к которой можно получить общий доступ ко всем кодам в одном модуле. Мы можем это сделать. Следуйте инструкциям ниже:

Шаг 1. Откройте редактор Visual Basic (VBE), нажав Alt + F11 или нажав кнопку Visual Basic на вкладке Разработчики в Excel. Выберите вкладку «Вставка», перейдите к «Модули» и нажмите на нее. Он добавит новый модуль в VBE для работы.

Шаг 2: В только что созданном модуле добавьте команду Option Explicit в начале кода VBA (перед созданием любой переменной). Опция Explicit помогает вам, если есть какая-либо опечатка при использовании определенной переменной. Если используемая переменная не определена в системе, эта опция выдает сообщение об ошибке о том, что переменная не определена.

Код:

 Вариант Явный 

Шаг 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, который устанавливает переменную как public для всех модулей, где бы вы ни работали.

Шаг 1: Создайте новый модуль. Перейдите на вкладку « Вставка », нажмите « Модуль», чтобы добавить новый модуль в VBE.

Шаг 2: Добавить опцию Явный в модуле.

Код:

 Вариант Явный 

Шаг 3: Определите новую переменную с именем var1 и var2 как целое число типа. Но на этот раз мы используем Public вместо Dim (который мы использовали ранее).

Код:

 Опция Явный Public var1 As Integer Public Var2 As Integer 

Шаг 4: Теперь эти две переменные можно использовать в нескольких модулях, если они созданы в одном VBE. Смотрите пример, приведенный ниже:

Код:

 Опция Явный Public var1 As Integer Public var2 As 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 End Sub 

Если вы могли видеть скриншот выше, мы использовали тот же набор переменных, определенных в Module2, и имели значения, такие как 1000 и 999 соответственно. Мы используем функцию MsgBox для представления значений этих двух переменных соответственно. Запустите код, и вы увидите результат, как показано ниже:

Вот как переменная может использоваться публично внутри модуля и между модулями.

То, что нужно запомнить

  • Всегда предпочтительно определять переменные явно в VBA. Так что они не ограничены подпроцедурой, в которой они определены.
  • Вы можете назначить общедоступную переменную двумя способами: один внутри модуля, используя обычный оператор Dim, и второй для всех модулей, представленных в VBE, используя оператор Public или Global.

Рекомендуемые статьи

Это руководство по VBA Public Variable. Здесь мы обсуждаем, как объявить общедоступную переменную в Excel, используя код VBA в Excel, вместе с практическими примерами и загружаемым шаблоном Excel. Вы также можете просмотреть наши другие предлагаемые статьи -

  1. VBA Global Variables
  2. Одна переменная таблица данных в Excel
  3. VBA FileSystemObject (FSO)
  4. Таблица двух переменных данных в Excel

Категория: