Как мне загрузить что-то, когда страница выбрана? - PullRequest
1 голос
/ 31 июля 2011

Я пытаюсь сделать форму с большим количеством страниц.Пока все работает нормально, и я добавил элементы управления из кода.Их сотни, и это делает приложение «тяжелым».Теперь я добавляю все элементы в выпадающие списки при инициализации, но я хочу загрузить элементы управления при изменении страницы.Поэтому, когда я запускаю форму, элементы управления должны быть загружены для страницы 1. То, что я хочу сделать, - это когда я нажимаю на Страницу 2 Многостраничной страницы, чтобы загрузить ее компоненты (вместо добавления всех их при инициализации пользовательской формы).Спасибо!

Ответы [ 2 ]

2 голосов
/ 31 июля 2011

Если вы хотите инициализировать каждую страницу только при нажатии, вы можете отследить, какая из них была нажата, используя что-то вроде:

Private mbInitialised() As Boolean

Private Sub UserForm_Initialize()
    ReDim mbInitialised(MultiPage1.Pages.Count - 1)
    SetupPage 0
End Sub

Private Sub MultiPage1_Change()
    SetupPage MultiPage1.Value
End Sub

Private Sub SetupPage(index As Integer)
    If (mbInitialised(index)) Then Exit Sub
    mbInitialised(index) = True
    MsgBox "init page " & index + 1
    '//setup here
End Sub
0 голосов
/ 12 февраля 2013

Я думаю, что это более простой способ сделать это

Загрузить UserForm: UserForm.MultiPage1.Value = 0: UserForm.Show

, где начинается многостраничное значениев "page1" , так как массивы начинаются с нуля

, если вы хотите изменить другую страницу. Значение = 0 в значении страницы - 1

ex:

Загрузить UserForm: UserForm.MultiPage1 .Value = 4 : UserForm.Show

, что приведет вас к "page3" многостраничногопосле инициализации пользовательской формы

* edit: немного неправильно понял вопрос, мой код перенесет вас на страницу, но не выполнит что-то при смене страниц, вместо этого используйте код Алекса

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...