powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel. Загрузить форму через объектную переменную
8 сообщений из 8, страница 1 из 1
Excel. Загрузить форму через объектную переменную
    #35872572
grey_rat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Load <имя формы> - это ясно.
А если <имя формы> заранее неизвестно?

Можно добыть форму как объект

Set f = ActiveWorkbook.VBProject.VBComponents(<имя формы>)

и таким образом с ней работать. Но

Load f

откликается визгом "can't load this object"

Есть ли способы обхода?
...
Рейтинг: 0 / 0
Excel. Загрузить форму через объектную переменную
    #35872875
Pavel55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если так?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub NameOfUserForms()
Dim iCount As Long

    With ThisWorkbook.VBProject.VBComponents
        For iCount = .Count To  1  Step - 1 
            If .Item(iCount).Type =  3  Then
                MsgBox "Имя пользовательской формы: " & .Item(iCount).Name, , ""
            End If
        Next
    End With
End Sub

______________________________________________________________
Разрабатываю макросы под заказ.
Email: MacrosForYou собака yandex точка ru
...
Рейтинг: 0 / 0
Excel. Загрузить форму через объектную переменную
    #35873100
grey_rat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pavel55А если так?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub NameOfUserForms()
Dim iCount As Long

    With ThisWorkbook.VBProject.VBComponents
        For iCount = .Count To  1  Step - 1 
            If .Item(iCount).Type =  3  Then
                MsgBox "Имя пользовательской формы: " & .Item(iCount).Name, , ""
            End If
        Next
    End With
End Sub

Речь немного о другом.
Имена форм вылавливаются без труда, это верно.
Но как загрузить одну из них?
Load воспринимает только явное указание имени. На объектную переменную - лается. В этом и проблема.
...
Рейтинг: 0 / 0
Excel. Загрузить форму через объектную переменную
    #35873418
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
Dim f As Object
Set f = UserForm1
Load f
...
Рейтинг: 0 / 0
Excel. Загрузить форму через объектную переменную
    #35873735
grey_rat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot big-duke]
Код: plaintext
1.
2.
3.
Dim f As Object
Set f = UserForm1
Load f
Ну и откуда возьмется значение у UserForm1?
...
Рейтинг: 0 / 0
Excel. Загрузить форму через объектную переменную
    #35873857
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grey_rat а Вы смотрели тип объекта f после
Код: plaintext
Set f = ActiveWorkbook.VBProject.VBComponents(<имя формы>)

вероятно надо делать так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Public Sub test()
    Dim f As Object
    
    Set f = UserForms.Add("UserForm1")
    
    f.Show
    
End Sub
I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
Excel. Загрузить форму через объектную переменную
    #35873861
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
Dim FormName As String
FormName = "UserForm1"
VBA.UserForms.Add(FormName).Show
...
Рейтинг: 0 / 0
Excel. Загрузить форму через объектную переменную
    #35874131
grey_rat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
HandKot
вероятно надо делать так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Public Sub test()
    Dim f As Object
    
    Set f = UserForms.Add("UserForm1")
    
    f.Show
    
End Sub


Да. Причем форма должна быть описана именно как объект.
Спасибо.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel. Загрузить форму через объектную переменную
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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