powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Область видимости переменных
5 сообщений из 5, страница 1 из 1
Область видимости переменных
    #36220274
Infinity Creator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Столкнулся со следующей проблемой:
Имеется несколько открытых Workbooks. У каждой имеется набор модулей с кодом.
Необходимо, чтобы переменная или объект кода одной открытой книги были видимы в коде другой открытой книги.

Объявление на уровне модуля в разделе Declarations:

Код: plaintext
1.
2.
3.
4.
5.
6.
Public TEST as String 

'Книга Workbooks("Document.xls")
Sub Test
    TEST = "Control Value"
End Sub

- после окончания процедуры, присвоенное переменной значение видимо только на уровне модулей книги, где эта переменная объявлена. Попытка обратиться к ее значению из модуля другой открытой книги приводит к ошибке еще на уровне запуска процедуры - говорит отсутствует объявление переменной.
Использование

Код: plaintext
Global TEST as String 

- также не дал результата.

Единственный способ, который работает - записывать данные в какую-то ячейку одной книги и считывать это значение из другой через операцию типа:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
'Книга Workbooks("Document.xls")
Sub PutGlobalValue()
    Workbooks("Document.xls").Worksheets("Sheet1").Cells( 1 , 1 ).Value2 = "Control Value"
End Sub

'Книга Workbooks("Listing.xls")
Sub GetGlobalValue()
    Dim TestGlobal as String    
    TestGlobal = Workbooks("Document.xls").Worksheets("Sheet1").Cells( 1 , 1 ).Value2
End Sub

И еще, подскажите, есть ли возможность запустить процедуру одной открытой книги из кода другой? Вариант через событие листа на изменение данных ячейки не интересен, т.к. это аналог кода выше.
...
Рейтинг: 0 / 0
Область видимости переменных
    #36220343
Infinity CreatorОбъявление на уровне модуля в разделе DeclarationsНа уровне какого модуля - обычного, листа, книги? Перенесите описание с Public в модуль книги и пользуйтесь из другой книги, как свойством книги: Workbooks("Document.xls").TEST. Аналогично для свойств/процедур/функций.

P.S. Требует ли создание бесконечности бесконечного количества времени?
...
Рейтинг: 0 / 0
Область видимости переменных
    #36220378
Infinity Creator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
13-й кварталInfinity CreatorОбъявление на уровне модуля в разделе DeclarationsНа уровне какого модуля - обычного, листа, книги? Перенесите описание с Public в модуль книги и пользуйтесь из другой книги, как свойством книги: Workbooks("Document.xls").TEST. Аналогично для свойств/процедур/функций.


На уровне модуля VBA проекта.

Я понимаю, что так можно. Но есть ли способ указания не привязанной к книге переменной, которая видима во всех текущих открытых книгах? Которая в объектной модели привязывается не к Workbook, а к Application?
...
Рейтинг: 0 / 0
Область видимости переменных
    #36220573
Infinity Creator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
13-й квартал...
P.S. Требует ли создание бесконечности бесконечного количества времени?
[не тормоз]

Время - не существует. Оно - лишь наш способ познавать вселенную.

А вообще - спасибо за подсказку.
...
Рейтинг: 0 / 0
Область видимости переменных
    #36220676
>[не тормоз]


Можно создать .XLA с Public переменными в обычном модуле, подключить в диалоге надстроек, и в книгах, которые должны иметь доступ к этим переменным, в VBA проекте сделать ссылку (диалог References) на .XLA. Преимущество здесь в дополнительном управлении областью видимости переменных - кто не сделал ссылку, тот и не видит.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Область видимости переменных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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