Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Номер формы в переменную - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Номер формы в переменную (Макросы/Sub)
Номер формы в переменную
Dмитрий Дата: Пятница, 20.01.2017, 09:02 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 91
Репутация: 9 ±
Замечаний: 40% ±

Excel 2010
Добрый день. Для обращения к элементу управления я использую такую конструкцию:[vba]
Код
UserForm1.Controls ("ComboBox" & i).....
[/vba] Как осуществить такое же для UserForm? Например:[vba]
Код
Controls ("UserForm" & i).Show ' не работает
[/vba]
 
Ответить
СообщениеДобрый день. Для обращения к элементу управления я использую такую конструкцию:[vba]
Код
UserForm1.Controls ("ComboBox" & i).....
[/vba] Как осуществить такое же для UserForm? Например:[vba]
Код
Controls ("UserForm" & i).Show ' не работает
[/vba]

Автор - Dмитрий
Дата добавления - 20.01.2017 в 09:02
Dмитрий Дата: Пятница, 20.01.2017, 09:52 | Сообщение № 2
Группа: Пользователи
Ранг: Участник
Сообщений: 91
Репутация: 9 ±
Замечаний: 40% ±

Excel 2010
Спасибо, решение нашел. [vba]
Код
    C = "UserForm" & C
    VBA.UserForms.ADD(C).Show
[/vba]
 
Ответить
СообщениеСпасибо, решение нашел. [vba]
Код
    C = "UserForm" & C
    VBA.UserForms.ADD(C).Show
[/vba]

Автор - Dмитрий
Дата добавления - 20.01.2017 в 09:52
Dмитрий Дата: Пятница, 20.01.2017, 15:38 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 91
Репутация: 9 ±
Замечаний: 40% ±

Excel 2010
Ребята, поспешил, все еще нужна помощь. При такой конструкции создается новый экземпляр формы. Как сделать, чтобы выводилась та же форма
 
Ответить
СообщениеРебята, поспешил, все еще нужна помощь. При такой конструкции создается новый экземпляр формы. Как сделать, чтобы выводилась та же форма

Автор - Dмитрий
Дата добавления - 20.01.2017 в 15:38
anvg Дата: Пятница, 20.01.2017, 15:56 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 581
Репутация: 271 ±
Замечаний: 0% ±

2016, 365
Доброе время суток.
Сохраните созданные формы в коллекцию и обращайтесь по именам через неё.
[vba]
Код

Public formCollection As Collection

Public Sub InitializeForms()
    Set formCollection = New Collection
    Load UserForm1
    formCollection.Add UserForm1, UserForm1.Name
    Load UserForm2
    formCollection.Add UserForm2, UserForm2.Name
End Sub

Public Sub ShowFormByName(ByVal formName As String)
    formCollection(formName).Show
End Sub
[/vba]
В формы только добавьте код, чтобы она не выгружалась, иначе будет сбой.
[vba]
Код
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Cancel = True
    Me.Hide
End Sub
[/vba]
P. S. А в общем-то можете объяснить - зачем такой подход?
 
Ответить
СообщениеДоброе время суток.
Сохраните созданные формы в коллекцию и обращайтесь по именам через неё.
[vba]
Код

Public formCollection As Collection

Public Sub InitializeForms()
    Set formCollection = New Collection
    Load UserForm1
    formCollection.Add UserForm1, UserForm1.Name
    Load UserForm2
    formCollection.Add UserForm2, UserForm2.Name
End Sub

Public Sub ShowFormByName(ByVal formName As String)
    formCollection(formName).Show
End Sub
[/vba]
В формы только добавьте код, чтобы она не выгружалась, иначе будет сбой.
[vba]
Код
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Cancel = True
    Me.Hide
End Sub
[/vba]
P. S. А в общем-то можете объяснить - зачем такой подход?

Автор - anvg
Дата добавления - 20.01.2017 в 15:56
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Номер формы в переменную (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!