2017-10-15 1 views
0

Ich habe ein einziges Benutzerformular mit 3 "Top-Level" Seiten (mit der Multipage-Funktionalität) und dann 4 verschachtelten Seiten jeweils innerhalb von 2 der Top-Level-Seiten. Siehe Beispielbild unten. Ich habe eine schwierige Zeit, programmatisch auf die verschachtelten Seiten zu verweisen.EXCEL VBA: Auswählen bestimmter Seiten in einem Benutzerformular, wenn MultiPages verschachtelt sind

Screenshot of Nested Multipage Userform

In diesem Beispiel sind die Seitenbeschriftungen und Namen gleich. Daher wird die Seite mit der Beschriftung von Page4 auch als Page4 bezeichnet. Ich fand jemand anderes Code online, der die Seite Index zurückkehren soll, wenn der Name der Seite, um es übergeben wird:

===

Funktion fMpIndex (ByVal Seitenname 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 Funktion

===

Dies funktioniert gut für die Top-Level-Seiten, aber wenn ich versuche, so etwas wie:

012.351.

MsgBox ("Diese Seite des Index" & fMpIndex ("Page5"))

für jede der verschachtelten Seiten (in diesem Beispiel beide Seiten 4 & 5), dann gibt die Methode einen Wert von -1 zeigt an, dass die Seite nicht existiert, aber offensichtlich tut es das. Ist das ein Problem mit dem Umfang? Sucht der obige Code nur nach den Seiten der obersten Ebene und nicht nach den verschachtelten Seiten?

Was ist der sicherste und zuverlässigste Weg, um eine bestimmte Seite programmatisch auf einen Namen oder eine Beschriftung oder auf beides zu verweisen? Ich nehme an, es wäre so etwas wie:

die Seite strip.which page.name userform.which („Page5“)

In diesem Beispiel habe ich nur 1 Userform haben, aber ich möchte wissen: Was ist, wenn Ich hatte 2 Benutzerformulare? Auch im obigen Beispiel nehme ich bereits an, dass man angeben muss, auf welchen der beiden Seitenstreifen verwiesen wird ... das ist jetzt eine Annahme von mir und ist möglicherweise nicht notwendig.

Idealerweise möchte ich einen absoluten Verweis auf jede Seite im Benutzerformular verwenden, unabhängig davon, ob es sich um eine Seite der obersten Ebene oder eine verschachtelte Seite handelt. Wenn es tatsächlich so etwas wie die obige Spezifikation gibt, kann jemand bitte Beispielcode angeben?

Danke,

Dan

Antwort

0

In Ihrem Screenshot sind die einzigen Seiten in MultiPage1 Seiten 1, 2 und Page3. Diese können unter Verwendung (zum Beispiel) MultiPage1.Pages("Page1") referenziert werden. MultiPage1.Pages("Page4") existiert nicht.

Seite 1 enthält MultiPage2 und seine Seiten sind Page4 und Page5. Dies können Referenzen sein, die MultiPage2.Pages("Page4") verwenden.

Sie können Seiten in einem MultiPage-Steuerelement nach Index referenzieren, z. B. in MultiPage1.Pages(iPageIndex), wobei iPageIndex von 0 bis zur Anzahl der Seiten minus eins geht. In Ihrem Screenshot, MultiPage1.Pages(1) Referenzen Seite2 und MultiPage2.Pages(0) Referenzen Seite4.

Verwandte Themen