2017-10-15 12 views
0

3つの「トップレベル」ページ(マルチページ機能を使用)と4つのネストされたページを持つ2つのトップレベルページ。下記の写真を見てください。私はプログラム的にネストされたページを参照するのは困難な時を抱えています。この例ではEXCEL VBA:マルチページがネストされている場合のユーザーフォーム内の特定のページの選択

Screenshot of Nested Multipage Userform

、ページのキャプションと名前は同じです。したがって、Page4のキャプションを持つページもPage4という名前になります。

===

機能fMpIndex(文字列としてByValページ名)

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 

終了:私は、ページ名が渡されたときに、ページのインデックスを返すことになっている他の誰かのコードをオンラインで見つけ機能

===

私が何かしようとすると、これは、しかし、トップレベルのページのため正常に動作します:

メッセージボックスは、ネストされたページのいずれかのために

(この例では、両方のページ4 & 5)(& fMpIndex(「PAGE5」)「このページのインデックスが」)、この方法は、以下の値を返す-1ページが存在しないことを示していますが、明らかにそうです。これは範囲の問題ですか?上記のコードは、ネストされたページではなくトップレベルのページのみを検索しますか?

特定のページを名前またはキャプションまたはその両方でプログラムで参照する最も安全で信頼性の高い方法は何ですか?私はそれがようなものになるだろうと仮定します。この例ではページstrip.which page.name(「PAGE5」)をuserform.which

、私は唯一の1人のユーザーフォームを持っていますが、私が知りたい:どのような場合私は2つのユーザーフォームを持っていましたか?また、上記の例では、2つのページストリップのどちらが参照されているかを指定しなければならないと私はすでに仮定しています...これは今のところ私の前提であり、必要ではないかもしれません。

理想的には、トップレベルページであるかネストされたページであるかにかかわらず、ユーザーフォームの各ページに絶対参照を使用する方法が必要です。それが実際に上記の仕様のようなものなら、誰かがサンプルコードを提供できますか?

があなたのスクリーンショットでは

ダン

答えて

0

、ありがとう、MultiPage1で唯一のページはページ1、ページ2、およびページ3です。これらは、例えば、MultiPage1.Pages("Page1")を使用して参照できます。 MultiPage1.Pages("Page4")は存在しません。

Page1には、MultiPage2が含まれ、そのページはPage4とPage5です。これらは、MultiPage2.Pages("Page4")を使用して参照することができます。

MultiPage1.Pages(iPageIndex)のように、MultiPageコントロール内のページをインデックスで参照できます。ここで、iPageIndexは0からページマイナス1になります。スクリーンショットではMultiPage1.Pages(1)、Page2は MultiPage2.Pages(0)を参照してください。

関連する問題