powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Глобальная переменная. VBA
6 сообщений из 31, страница 2 из 2
Глобальная переменная. VBA
    #36299338
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Hugo121
> А то нигде сейчас не нашёл, что Public надо в отдельном модуле объявлять.

Скажем так, в отдельном модуле это для примера, потому, что в ваших тестах не было упоминания о разнесении кода по
разным модулям, а в принципе можно сделать в одном модуле объявить Public переменную, в другом модуле присвоить ей
значение, и в третьем модуле вывести это значение. В рамках одного модуля достаточно объявить переменную как Dim перед
первой функцией/процедурой в этом модуле.

> Всё работает. Только ведь Option Explicit не обязательно, и так работает?

в простейшем примере, необязательно, но при отсутствии Option Explicit возможна такая ситуация:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Sub tt()
    y =  1 
    test
End Sub

Sub test()
    y = "gcdn"
    MsgBox y
End Sub
это чревато трудноуловимыми ошибками когда одноименная переменная используется в разных местах и результаты одного
вычисления "влазят" в результат другого вычисления. В маленьких проектах это не страшно, а в больших и долгоиграющих это
может стать ночным кошмаром. Так что советую завести себе привычку сразу после установки студии/офиса идти в IDE VB/VBA
в меню Tools->Options, закладка Editor снять птицу "Auto Syntax Check" - что-бы не доставало месседжами когда не
закончил объявлять переменную и т.д. и поставить птицу Requrie Variable Declaration - это чтобы руками не писать Option
Explicit в каждом новом модуле

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Глобальная переменная. VBA
    #36299407
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В рамках одного модуля достаточно объявить переменную как Dim перед
первой функцией/процедурой в этом модуле.
Вот спасибо, проверил, работает
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Dim x As Long

Sub tt()
    x =  1 
    test
End Sub

Sub test()
    MsgBox x
End Sub
Т.е. Public пишем, если надо в разных модулях использовать.
А я всё пытался в первом макросе объявить, вот и не получалось.
Про Option Explicit понятно.
И спасибо за "Auto Syntax Check" - действительно достало, а отключить не додумался...
...
Рейтинг: 0 / 0
Глобальная переменная. VBA
    #36299512
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Hugo121
> Про Option Explicit понятно.

Да вот, кстати вот отличный пример:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Sub tt()
    x =  1 
    test
End Sub

Sub test()
    MsgBox х
End Sub

Private Sub Form_Load()
х = "dfgjknbf"
tt
End Sub
в проекте модуль формы с выше приведенным кодом и обычный модуль с одной строкой: Public x As Long
попробуй понять, какой будет результат и почему он будет такой, и представь ловить такой глюк в полсотне форм, и
таком-же количестве классов.

> И спасибо за "Auto Syntax Check" - действительно достало, а отключить не додумался...

иногда отрывайся и просто лазь по менюшкам и вспоминай что какой пункт делает, ещё залазь в настройку панелей
инструментов, тоже найдется много интересного

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Глобальная переменная. VBA
    #36299553
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Даа, я стараюсь конечно раскладку не путать, + ко всему остальному :)
...
Рейтинг: 0 / 0
Глобальная переменная. VBA
    #36299613
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Hugo121
> Даа, я стараюсь конечно раскладку не путать, + ко всему остальному :)

Да раскладка, это сильно утрированный пример, хотя здесь иногда проскакивает
Когда количество переменных переваливает на сотню-другую, некоторые начинают называтся очень похоже и обычная опечатка
оборачивается несколькими днями отладки и потом воплями в стиле "Куда смотрели мои глаза!!!" вперемешку с "непереводимой
игрой слов на местном диалекте".

Ладно, что-то я много агитирую

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Глобальная переменная. VBA
    #36300265
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторТолько ведь Option Explicit не обязательно, и так работает? Это чтоб неповадно было переменные не объявлять. И вообще то для выработки нормального стиля очень даже обязательно.
...
Рейтинг: 0 / 0
6 сообщений из 31, страница 2 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Глобальная переменная. VBA
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]