powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Область видимости переменных!!! Help
11 сообщений из 11, страница 1 из 1
Область видимости переменных!!! Help
    #33703622
michael23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Запутался, как сделать видимой переменную (VBA, Excel) в другом модуле
т.е. при загрузке книги или при активации формы задается переменная, которая нужна во всех модулях "проекта" и формах (НЕ КОНСТАНТА!)
Вопрос: Как ее объявить? Public теряется при переходе от формы к модулю.

Не мой день ... сегодня
...
Рейтинг: 0 / 0
Область видимости переменных!!! Help
    #33703637
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
michael23Запутался, как сделать видимой переменную (VBA, Excel) в другом модуле
т.е. при загрузке книги или при активации формы задается переменная, которая нужна во всех модулях "проекта" и формах (НЕ КОНСТАНТА!)
Вопрос: Как ее объявить? Public теряется при переходе от формы к модулю.

Не мой день ... сегодня
в модуле объявлять Public
теряется сама перемнная или значение перемнной
...
Рейтинг: 0 / 0
Область видимости переменных!!! Help
    #33703715
michael23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Смотрю в отладчике, из формы вызывается функция, которая описана в модуле, но в функции создается новый экземпляр такой же переменной (с тем же именем) со значением Null тип Variant, причем отладчик показывает что у public переменной (обозначенной в форме) значение никуда не исчезло.

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

Надеюсь понятно описал проблему
...
Рейтинг: 0 / 0
Область видимости переменных!!! Help
    #33703730
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
michael23Смотрю в отладчике, из формы вызывается функция, которая описана в модуле, но в функции создается новый экземпляр такой же переменной (с тем же именем) со значением Null тип Variant, причем отладчик показывает что у public переменной (обозначенной в форме) значение никуда не исчезло.

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

Надеюсь понятно описал проблему
код функции отпиши
...
Рейтинг: 0 / 0
Область видимости переменных!!! Help
    #33703815
michael23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
----------- ФОРМА ---------------
Public ABookName As String ' используется во всех формах

Private Sub UserForm_Activate()
ABookName = "Name.xls" ' переменная глобальная - имя книги
End Sub

Private Sub ZapZatMC_Click() ' - кнорка на форме
Dim col As Integer, k As Integer
If CheckSheet() = True Then ' CheckSheet() !!!! - та самая функция
'действия
End If
'действия
End Sub
--------------------------------
--------------МОДУЛЬ----------

' Простая проверка на правильность наименования кники
Public Function CheckSheet() As Boolean
Dim CurSheet As String, CurBook As String
Dim check As Boolean
check = False
CurBook = ActiveWorkbook.Name

If CurBook <> ABookName Then 'ABookName !!!! - создается второй экземпляр
check = True
End If
'текст

CheckSheet = check
End Function
...
Рейтинг: 0 / 0
Область видимости переменных!!! Help
    #33703855
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
michael23----------- ФОРМА ---------------
Public ABookName As String ' используется во всех формах

Private Sub UserForm_Activate()
ABookName = "Name.xls" ' переменная глобальная - имя книги
End Sub

Private Sub ZapZatMC_Click() ' - кнорка на форме
Dim col As Integer, k As Integer
If CheckSheet() = True Then ' CheckSheet() !!!! - та самая функция
'действия
End If
'действия
End Sub
--------------------------------
--------------МОДУЛЬ----------

' Простая проверка на правильность наименования кники
Public Function CheckSheet() As Boolean
Dim CurSheet As String, CurBook As String
Dim check As Boolean
check = False
CurBook = ActiveWorkbook.Name

If CurBook <> ABookName Then 'ABookName !!!! - создается второй экземпляр
check = True
End If
'текст

CheckSheet = check
End Function
перекинь
Public ABookName As String ' используется во всех формах
в модуль что бы модуль видел и проверял данные переменной в функции
используй не Activate a Initialize событие формы

попробуй, отпишись................
...
Рейтинг: 0 / 0
Область видимости переменных!!! Help
    #33703879
michael23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну он теперь в модуле явно создает новую переменную
раньше значение было - Empty, а после ""
Это я уже пробовал в различных вариациях
Public значение из формы не затирает
...
Рейтинг: 0 / 0
Область видимости переменных!!! Help
    #33703915
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
michael23Ну он теперь в модуле явно создает новую переменную
раньше значение было - Empty, а после ""
Это я уже пробовал в различных вариациях
Public значение из формы не затирает
CurBook возвращиет имя файл с расширением так же как и ABookName ?
...
Рейтинг: 0 / 0
Область видимости переменных!!! Help
    #33703979
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TIKO michael23Ну он теперь в модуле явно создает новую переменную
раньше значение было - Empty, а после ""
Это я уже пробовал в различных вариациях
Public значение из формы не затирает
CurBook возвращиет имя файл с расширением так же как и ABookName ?
с перемещением Public ABookName As String в модуль
у меня работает
...
Рейтинг: 0 / 0
Область видимости переменных!!! Help
    #33704011
michael23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну я же говорю не мой день,
перед тем как писать думал тоже заработает .... не первый год прграммирую и в других языках там понятно описано как объявлять глобальные переменные и область видимости,
а в VBA в лучшем случае пол страницы ... что-то про public и все
...
Рейтинг: 0 / 0
Область видимости переменных!!! Help
    #33704045
michael23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FZap.ABookName

ИмяФормы.ИмяПеременной - Так Заработало .... Уффффф
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Область видимости переменных!!! Help
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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