2017-01-24 14 views
1

Multipageページ内の特定のフレームセットをVBA User_Formにループしようとしています。しかし、私はページでできるのと同じように、各フレームコントロールで可変オブジェクト名を使用できるようには見えません。変数オブジェクト名を使用してユーザーフォームフレームをループする方法

は私が

オブジェクトは次の行

For Each cCont in Me.MultiPage1.Pages(PageName).Frames(DataFrame).Controls

マイコード

で、このプロパティまたはメソッド

をサポートしていないエラーを取得しています

Do While x <= Me.MultiPage1.Pages.Count 
    PageName = "Page" & CStr(x) 
    DataFrame = "DataFrame" & CStr(x) 
    For Each cCont In Me.MultiPage1.Pages(PageName).Frames(DataFrame).Controls 

答えて

0

あなたは実際にあなたができると思う方法を反復することはできません。

まず、MultiPage1のすべてのページを反復処理する必要があります。彼らはタイプFrameである場合、彼らはあなたがFrame内で繰り返すことができますが、構文は少し異なる場合

第二に、現在のPage内のすべてのControlsをループし、(下記のコードで参照)、確認してください。誰がここにあるように、最終的なコードが見えるかと思っために、コード@Shaiを一緒に置くことについてのヘルプは

コード

Option Explicit 

Private Sub IterateIn_MultiPage() 

Dim x As Long, j As Long 
Dim cCont As Control 

For x = 0 To Me.MultiPage1.Pages.Count - 1 ' <-- loop through all MultiPage Pages 

    For Each cCont In Me.MultiPage1.Pages(x).Controls ' <-- loop through controls of current page 
     If TypeOf cCont Is Frame Then ' <-- check if control type is Frame 
      For j = 0 To cCont.Controls.Count - 1 '<-- loop through all items related to the current Frame collection 
       MsgBox cCont.Controls(j).Name '<-- display a message box 
      Next j 
     End If 
    Next cCont 

Next x 

End Sub 
+0

これは、フレーム内の各チェックボックスによってフィルタリングする作業が、cCont.Controls.Value = TrueのThen'がに動作しない場合のみこれはあなたのポストではなかった – Greg

+0

にチェックされているものを見つける '追加しているように見えますあなたは何を達成しようとしていますか? –

0

感謝。これは、各ページ内の各フレームをループし、希望の範囲内のチェックボックスのキャプションを貼り付けます。

Option Explicit 

Sub IterateIn_MultiPage() 
Dim x As Long, j As Long 
Dim cCont As Control 
Dim counter As Integer 
Dim y As Integer 
Dim Range As String 
y = 1 

For x = 0 To ImportData.MultiPage1.Pages.Count - 1 
counter = 0 
    For Each cCont In ImportData.MultiPage1.Pages(x).Controls 
     Do While counter < 1 
      If TypeOf cCont Is Frame Then 
       For j = 0 To cCont.Controls.Count - 1 
        If cCont.Controls(j).Value = True Then 
          Range = "E" & y 
          If counter = 0 Then 
           Worksheets("Calculations").Range(Range) = cCont.Controls(j).Caption 
           counter = counter + 1 
          ElseIf counter = 1 Then 
           Worksheets("Calculations").Range(Range) = Worksheets("Calculations").Range(Range) & " & " & cCont.Controls(j).Caption 
           y = y + 1 
          End If 
        End If 
       Next j 
      End If 
     Loop 
    Next cCont 

Next x 

End Sub 
関連する問題