К сожалению, я не смог ответить на мой вопрос с помощью Google.
Я создал пользовательскую форму с фреймом, который содержит различные элементы управления (Textbox, Combobox, Listbox, Label). Обычно входные данные сохраняются непосредственно в рабочую книгу после того, как пользователь нажимает кнопку ОК.
Но есть одна особая ситуация, когда я хочу, чтобы пользователь заполнил несколько из этих входных пользовательских форм одну за другой и сохранил все содержимое Userforms наконец. Поэтому я создал глобальный объектный массив, в котором я сохранил входные кадры каждой пользовательской формы, заполнил пользователь.
В конце я хотел go просмотреть все эти кадры и их элементы управления и сохранить содержимое. в один шаг. Моя уже существующая функция сохранения использует кадр в качестве входных данных, поэтому я хотел провести l oop через мой массив кадров.
Вот мой пример кода: (conArr - глобальная переменная Object Array)
Public Sub btnOK_Click()
conArrRow = 0
ReDim Preserve conArr(conArrRow)
Set conArr(conArrRow) = frmData.frameDataInput
Unload Me
End Sub
После выгрузки пользовательской формы я возвращаюсь к основному коду.
For Each ctl In conArr(0).Controls
MsgBox ctl.Name
Next
Здесь я получаю сообщение об ошибке в строке: For Each ctl In conArr(0).Controls
Microsoft Visual Basic
Run time error -2147418113 (8000ffff)
Automation error
Catastrophic failure.
Я полагаю, что проблема возникает из-за того, что форма с ее фреймом уже выгружена и больше не существует. Если я помещу часть основного кода непосредственно в конец btnOK_Click, он будет работать.
Я ценю любую помощь. Заранее спасибо.