потеря данных в массиве

Программирование на Visual Basic for Applications
FINAL
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 14.12.2005 (Ср) 19:02
Откуда: Казань

потеря данных в массиве

Сообщение FINAL » 31.01.2006 (Вт) 16:21

В разделе General Declarations у меня описан массив строк:
Dim aT() As String

Он заполняется значениями при открытии документа:
Private Sub Document_Open()
....
ReDim aT(k, 1) As String
....

Дальше все работает как надо, я могу использовать эти данные, но когда я вызываю форму, все данные массива теряются. Кто нибудь знает, в чем тут дело?
PS: запускаю форму через .Show, закрываю через Unload.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 31.01.2006 (Вт) 16:29

Попробуй не Dim, а Global.
Lasciate ogni speranza, voi ch'entrate.

FINAL
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 14.12.2005 (Ср) 19:02
Откуда: Казань

Сообщение FINAL » 31.01.2006 (Вт) 16:56

К сожалению не помогает, а в разделе ThisDocument, где у меня хранятся Document_Open и другие обработчики событий вообще такое вставлять нельзя. Пробовал через AutoOpen - все равно теряются значения. Также пытался принудительно выполнять AutoOpen(), чтобы массив вновь заполнился, но почему-то Word аварийно закрывается. Мне кажется, здесь что-то неправильное с моим диалоговым окном. В нем выбирается некоторое значение, вносится небольшое изменение в документ, и оно закрывается через Unload. Похоже, что, как ни крути время жизни любой переменной заканчивается то ли при запуске, то ли при выгрузке формы. Будем продолжать поиски.

FINAL
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 14.12.2005 (Ср) 19:02
Откуда: Казань

Сообщение FINAL » 31.01.2006 (Вт) 17:25

и еще один вопрос: когда запускается мое диалоговое окно
Form1.Show
Word почему-то перестает быть активным, активируется окно любой программы и приходится переключаться обратно в Word. Ерунда конечно, но раздражает сильно. Я бы мог контролировать все через
mydoc.Activate
но просто не пойму как.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 31.01.2006 (Вт) 17:28

Ты в модуль вставляй, а не в ThisDocument.
Либо объявляй, как Public.
И в любом случае используй Option Explicit.
Lasciate ogni speranza, voi ch'entrate.

FINAL
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 14.12.2005 (Ср) 19:02
Откуда: Казань

Сообщение FINAL » 31.01.2006 (Вт) 17:55

все равно не работает, даже если я полностью переписываю код, который заполняет массив, в макрос, который вызывает форму.
Но тем не менее большое спасибо, Большой Человек.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 98

    TopList