Dim/Private/Public/Static - Видимость переменных и констант в VBA (Серия VBA 31)
Вставка
- Опубліковано 25 жов 2019
- Привет! В этом видеоуроке мы поговорим на тему уровней видимости переменных и констант VBA.
В VBA, объявляя переменную или константу, мы можем определять, на каких уровнях она будет видима и доступна к использованию. Для того, чтобы разобраться в этой теме, нам понадобится точнее рассмотреть несколько пунктов.
Первое, о чем мы поговорим - какие области/места для сохранения процедур имеются в VBA. Иначе говоря, где мы можем писать процедуры.
Затем мы обсудим уровни видимости переменных в VBA:
• Procedure-level scope (Локальная переменная)
• Private module-level scope (Переменная уровня модуля закрытая)
• Public module-level scope (Переменная уровня модуля открытая)
В конце концов, поскольку мы до сих пор в нашем курсе VBA отдельно не рассмотрели константы, в этом видеоуроке мы наконец уделим отдельно время, чтобы быстро рассмотреть и эту тему. Мы поговорим об особенностях констант, как их объявлять и где их можно хорошо применить.
Кроме того, мы поговорим о фразе Static.
В любом случае, этот урок наверняка будет полезным для тебя, так что приятного просмотра и успехов в изучении VBA! :)
Отличный урок! Все правильно делаете.
Здравствуйте, Павел!
Большое спасибо Вам за то, что всегда смотрите новые видео! :)
С уважением и хороших Вам выходных,
ХБ
Большое спасибо за Ваш труд! Очень интересные и полезные видео!
Билял, здраствуйте! Спасибо за видео)
Спасибо! Смотрю и учусь!
Спасибо за труд!
Всё как всегда на высшем уровне.
Билял, благодарю! Интересный урок, понятно.
Круто! Очень полезно!
Здравствуйте!
Большое спасибо за Ваш комментарий, рад, что видео было для Вас полезным! 😊
Хороших Вам выходных!
С уважением,
Билял
Предлагаю Тему. Разбор реальных примеров. Как например видос - последняя строка в столбце, в умной таблице и т.п.
Или к примеру с форумов примеры брать и их разбирать по шагово.
и самое главное разными вариантами
Здравствуйте!
Спасибо за Ваше предложение! Постараюсь применить! :)
С уважением,
ХБ
Билял, спасибо за великолепный урок, обязательно возьму на вооружение!
У меня вопрос не по теме: на фоне бурного развития других языков программирования что ты думаешь насчёт VBA и были ли мысли встроить в Excel тот же Python c возможностью добавления библиотек или С++?
А есть возможность помимо объявления переменных с помощью оператора private, присваивать сразу переменными так же на уровне модуля значение? Например я объявила несколько листов рабочей книги, как Worksheet, а затем сразу присвоила значение каждой переменной так, чтоб в каждой процедуре переменные рабочих листов были уже присвоены?
Заранее спасибо.
Здравствуйте! Спасибо за очень полезные уроки! У меня есть вопрос.
Возможно ли создать глобальную переменную в UserForm, чтобы она была видна в Макросе?
Я сюда зашел тоже в поисках ответа, и как раз на этот вопрос!
У меня в проекте объявлена глобальная переменная , но её значение не попадает в формы, которые без неё сразу теряют смысл. Бьюсь и никак не могу понять почему формы не видят эту переменную. Как пример:
Public N As Integer
___________________________________ ___________________________________ ______________
Public Sub First() 'модуль2
Call Cell 'модуль4, в нем N получает значение из Input
UserForm1.Show 'форма в которой используется переменная N но приходит сюда как равная ноль
UserForm2.Show 'cюда N также входит как 0
End Sub
Что надо прописать ёще , чтобы формы увидели значение N или же я что то упускаю в изучении и в формы это не передается?
В чем отличие тогда Static и Public ?
Билял, спасибо. А почему вы не сторонник глобальных переменных? Какие проблемы могут возникнуть?
Автор все время про модули говорил. А если код в книге и/или в листах книги - тогда как распространяется действие переменных. Где их объявлять?
А локальные переменные, в разных процедурах, можно обзывать одинаковыми именами? Или все же стараться создавать уникальные имена?
Здравствуйте, Роман!
Да, можно - и я бы даже наверно сказал, что так и стоит делать. Таким образом Вы всегда в любой процедуре будете знать, как у Вас, скорее всего, называется определенная переменная для выполнения определенных задач. У меня, например, такими общими именами для переменных являются rgCellChecked, intCounter, lngCounter и так далее 😊
С уважением,
Билял
2021