|
|
|
Область видимости переменных!!! Help
|
|||
|---|---|---|---|
|
#18+
Запутался, как сделать видимой переменную (VBA, Excel) в другом модуле т.е. при загрузке книги или при активации формы задается переменная, которая нужна во всех модулях "проекта" и формах (НЕ КОНСТАНТА!) Вопрос: Как ее объявить? Public теряется при переходе от формы к модулю. Не мой день ... сегодня ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2006, 12:00 |
|
||
|
Область видимости переменных!!! Help
|
|||
|---|---|---|---|
|
#18+
michael23Запутался, как сделать видимой переменную (VBA, Excel) в другом модуле т.е. при загрузке книги или при активации формы задается переменная, которая нужна во всех модулях "проекта" и формах (НЕ КОНСТАНТА!) Вопрос: Как ее объявить? Public теряется при переходе от формы к модулю. Не мой день ... сегодня в модуле объявлять Public теряется сама перемнная или значение перемнной ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2006, 12:11 |
|
||
|
Область видимости переменных!!! Help
|
|||
|---|---|---|---|
|
#18+
Смотрю в отладчике, из формы вызывается функция, которая описана в модуле, но в функции создается новый экземпляр такой же переменной (с тем же именем) со значением Null тип Variant, причем отладчик показывает что у public переменной (обозначенной в форме) значение никуда не исчезло. По параметру не нужно мне передавать переменную, а хочу объявить ее как глобальную, но при переходе из формы в модуль кажется создается новая переменная с таким же именем. Как в другом модуле обратиться к переменной, если в форме (другом модуле) она определена как Public. Надеюсь понятно описал проблему ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2006, 12:39 |
|
||
|
Область видимости переменных!!! Help
|
|||
|---|---|---|---|
|
#18+
michael23Смотрю в отладчике, из формы вызывается функция, которая описана в модуле, но в функции создается новый экземпляр такой же переменной (с тем же именем) со значением Null тип Variant, причем отладчик показывает что у public переменной (обозначенной в форме) значение никуда не исчезло. По параметру не нужно мне передавать переменную, а хочу объявить ее как глобальную, но при переходе из формы в модуль кажется создается новая переменная с таким же именем. Как в другом модуле обратиться к переменной, если в форме (другом модуле) она определена как Public. Надеюсь понятно описал проблему код функции отпиши ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2006, 12:45 |
|
||
|
Область видимости переменных!!! Help
|
|||
|---|---|---|---|
|
#18+
----------- ФОРМА --------------- 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2006, 13:02 |
|
||
|
Область видимости переменных!!! Help
|
|||
|---|---|---|---|
|
#18+
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 событие формы попробуй, отпишись................ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2006, 13:13 |
|
||
|
Область видимости переменных!!! Help
|
|||
|---|---|---|---|
|
#18+
Ну он теперь в модуле явно создает новую переменную раньше значение было - Empty, а после "" Это я уже пробовал в различных вариациях Public значение из формы не затирает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2006, 13:20 |
|
||
|
Область видимости переменных!!! Help
|
|||
|---|---|---|---|
|
#18+
michael23Ну он теперь в модуле явно создает новую переменную раньше значение было - Empty, а после "" Это я уже пробовал в различных вариациях Public значение из формы не затирает CurBook возвращиет имя файл с расширением так же как и ABookName ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2006, 13:28 |
|
||
|
Область видимости переменных!!! Help
|
|||
|---|---|---|---|
|
#18+
TIKO michael23Ну он теперь в модуле явно создает новую переменную раньше значение было - Empty, а после "" Это я уже пробовал в различных вариациях Public значение из формы не затирает CurBook возвращиет имя файл с расширением так же как и ABookName ? с перемещением Public ABookName As String в модуль у меня работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2006, 13:38 |
|
||
|
Область видимости переменных!!! Help
|
|||
|---|---|---|---|
|
#18+
Ну я же говорю не мой день, перед тем как писать думал тоже заработает .... не первый год прграммирую и в других языках там понятно описано как объявлять глобальные переменные и область видимости, а в VBA в лучшем случае пол страницы ... что-то про public и все ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2006, 13:45 |
|
||
|
|

start [/forum/topic.php?fid=60&tid=2165936]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
182ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 475ms |

| 0 / 0 |
