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

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

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

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

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

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

Надеюсь понятно описал проблему
код функции отпиши
...
Рейтинг: 0 / 0
03.05.2006, 13:02
    #33703815
michael23
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Область видимости переменных!!! Help
----------- ФОРМА ---------------
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
03.05.2006, 13:13
    #33703855
TIKO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Область видимости переменных!!! Help
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
03.05.2006, 13:20
    #33703879
michael23
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Область видимости переменных!!! Help
Ну он теперь в модуле явно создает новую переменную
раньше значение было - Empty, а после ""
Это я уже пробовал в различных вариациях
Public значение из формы не затирает
...
Рейтинг: 0 / 0
03.05.2006, 13:28
    #33703915
TIKO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Область видимости переменных!!! Help
michael23Ну он теперь в модуле явно создает новую переменную
раньше значение было - Empty, а после ""
Это я уже пробовал в различных вариациях
Public значение из формы не затирает
CurBook возвращиет имя файл с расширением так же как и ABookName ?
...
Рейтинг: 0 / 0
03.05.2006, 13:38
    #33703979
TIKO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Область видимости переменных!!! Help
TIKO michael23Ну он теперь в модуле явно создает новую переменную
раньше значение было - Empty, а после ""
Это я уже пробовал в различных вариациях
Public значение из формы не затирает
CurBook возвращиет имя файл с расширением так же как и ABookName ?
с перемещением Public ABookName As String в модуль
у меня работает
...
Рейтинг: 0 / 0
03.05.2006, 13:45
    #33704011
michael23
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Область видимости переменных!!! Help
Ну я же говорю не мой день,
перед тем как писать думал тоже заработает .... не первый год прграммирую и в других языках там понятно описано как объявлять глобальные переменные и область видимости,
а в VBA в лучшем случае пол страницы ... что-то про public и все
...
Рейтинг: 0 / 0
03.05.2006, 13:55
    #33704045
michael23
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Область видимости переменных!!! Help
FZap.ABookName

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


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