2017-10-15 7 views
0

3 개의 "최상위"페이지 (다중 페이지 기능 사용)와 4 개의 중첩 페이지가 각각 최상위 페이지 중 2 개 이내 인 단일 userform이 있습니다. 아래 예제 그림을 참조하십시오. 프로그래밍 방식으로 중첩 된 페이지를 참조하는 데 어려움을 겪고 있습니다. 이 예에서 EXCEL VBA : MultiPages가 중첩 된 경우 사용자 폼의 특정 페이지 선택

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 

끝 : 나는 페이지 이름이 전달 될 때 페이지 인덱스를 반환하도록되어 다른 사람의 코드를 온라인으로 발견 기능

===

내가 좋아하는 뭔가를하려고 할 때 이것은, 그러나, 최상위 페이지에 대한 잘 작동 :

있는 MsgBox 중첩 페이지 중 어떤

(이 예에서, 두 페이지 4 & 5) (& fMpIndex ("Page5") "이 페이지의 인덱스는"),이 방법은 값을 반환 -1 페이지가 존재하지 않음을 나타내지 만 명백하게 나타납니다. 범위 문제입니까? 위의 코드는 중첩 페이지가 아닌 최상위 페이지 만 검색합니까?

프로그래밍 방식으로 이름이나 캡션 또는 둘 모두로 특정 페이지를 참조하는 가장 안전한 방법은 무엇입니까? 뭔가처럼 될 것이라고 가정이 예에서는 페이지 strip.which page.name ("Page5")

을 userform.which

, 나는 단지 1 정의 폼을 가지고,하지만 난 알고 싶어 : 만약에 2 userforms 있었나요? 또한, 위의 예제에서, 나는 이미 2 페이지 스트립 중 어느 것이 참조되고 있는지 지정해야한다고 가정하고 있습니다 ... 이것은 현재 내 부분에 대한 가정이며 필요하지 않을 수도 있습니다.

이상적으로는 최상위 페이지인지 중첩 페이지인지에 관계없이 사용자 폼의 각 페이지에 절대 참조를 사용하는 것이 좋습니다. 실제로 위의 사양과 비슷한 경우 누군가가 예제 코드를 제공 할 수 있습니까?

이 스크린 샷에서

답변

0

을 주셔서 감사합니다, MultiPage1의 페이지 만 페이지 1, 페이지 2 및 페이지 3입니다. 이들은 (예를 들어) MultiPage1.Pages("Page1")을 사용하여 참조 할 수 있습니다. MultiPage1.Pages("Page4") 존재하지 않습니다.

는 페이지 1은 MultiPage2를 포함, 그 페이지는 Page4 및 Page5 있습니다. 이들은 MultiPage2.Pages("Page4")을 사용하여 참조 할 수 있습니다.

MultiPage1.Pages(iPageIndex)과 같이 색인을 사용하여 MultiPage 컨트롤에서 페이지를 참조 할 수 있습니다. 여기서 iPageIndex는 0에서 1을 뺀 수입니다. 스크린 샷에서 MultiPage1.Pages(1)은 Page2를 참조하고 MultiPage2.Pages(0)은 Page4를 참조합니다.