У меня есть одна пользовательская форма с 3 страницами верхнего уровня (с использованием многостраничной функциональности), а затем с четырьмя вложенными страницами, каждая из которых находится внутри двух страниц верхнего уровня.
Снимок экрана вложенной многостраничной пользовательской формы
В этом примере заголовки и названия страниц совпадают. Следовательно, страница с заголовком Page4 также называется Page4. Я нашел в Интернете код, который должен возвращать индекс страницы, когда ей передается имя страницы:
Function fMpIndex(ByVal PageName As String)
Dim PageCounter As Long
With MultiPage1
For PageCounter = 0 To .Pages.Count - 1
If .Pages(PageCounter).Name = PageName Then fMpIndex = PageCounter: Exit Function
Next PageCounter
End With
fMpIndex = -1
End Function
Однако это работает для страниц верхнего уровня, когда я пробую что-то вроде:
MsgBox ("This page's index is " & fMpIndex("Page5"))
для любой из вложенных страниц (в этом примере обе страницы 4 и 5) этот метод возвращает значение -1, указывающее, что страница не существует. Это проблема объема? Приведенный выше код выполняет поиск только страниц верхнего уровня, а не вложенных страниц?
Каков самый безопасный и надежный способ программной ссылки на конкретную страницу по имени или заголовку, либо по обоим параметрам? Я предполагаю, что это будет примерно так:
which userform.which page strip.which page.name("Page5")
В этом примере у меня только одна пользовательская форма, но что, если бы у меня было две пользовательские формы? Кроме того, в приведенном выше примере я предполагаю, что нужно указать, на какую из двух полос страниц ссылаются.
В идеале мне нужен способ использовать абсолютную ссылку на каждую страницу в пользовательской форме, независимо от того, является ли она страницей верхнего уровня или вложенной страницей.