VBA - возврат значения из подпроцедуры

В этом руководстве вы узнаете, как вернуть значение из подпроцедуры в VBA.

Подпроцедура не предназначена для возврата значения - для этого используется функциональная процедура. Однако может быть время, когда вы запускаете некоторый код в подпроцедуре, где вам нужно получить значение из этой подпроцедуры. Для этого можно использовать модуль или глобальные переменные или использовать подпроцедуру для заполнения листа Excel.

Использование переменных для возврата значения

Вы можете объявлять переменные на уровне модуля. При этом эти переменные можно использовать в любом месте модуля, и переменные сохраняют свои значения. Чтобы объявить переменную на уровне модуля, просто объявите переменную в верхней части модуля кода:

123456789 Вариант ЯвныйDim dblQty as DoubleSub TestA ()'вызовите субподрядчик TestBПозвоните в TestB'показать значение переменной в окне модуляDebug.Print dblQtyКонец подписки
1234 Sub TestB ()'заполнить переменную модуляdblQty = 900Конец подписки

Чтобы собрать их вместе, мы запустим TestA, который, в свою очередь, вызовет TestB и даст нам значение 900 в ближайшем окне.

Это будет работать только внутри модуля, поскольку переменная была объявлена ​​с помощью оператора Dim на уровне модуля.

Глобальная переменная

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

Использование подпроцедуры для заполнения листа Excel

Подпроцедура ниже напрямую заполнит диапазон от A1 до C1 на вашем листе Excel, таким образом возвращая значения в ячейки из подпроцедуры.

12345 Sub PopulateRange ()Диапазон ("A1") = "Продукт"Диапазон ("B1") = "Количество"Range ("C1") = "Стоимость"Конец подписки

Затем вы можете ссылаться на эти значения в другой процедуре, ссылаясь на значения ячеек:

1234567 Sub RetrieveRange ()Dim Product as String, Quant as long, Cost as doubleПродукт = Диапазон ("A1")Quant = Диапазон ("B1")Стоимость = Диапазон ("C1")Конец подписки

Вы поможете развитию сайта, поделившись страницей с друзьями

wave wave wave wave wave