0

アプリケーション内に、現在FRMPFC_folderCreatorWindowというユーザーフォーム内にあるSubがあります。アプリケーション全体を明確にするために、このSubをユーザーフォームからPFC_filesystemManipulationというモジュールに移動し、そこからFRMPFC_folderCreatorWindowのボタンを使用してSubを呼び出します。ただし、これを実行してコードを実行すると、次の行でエラーが生成されます。

For Each cCont In Me.Controls

これは、Subがフォームのコンテキストの外にあるためだと理解していますが、Me.Controlsを使用せずにコンテキストを維持するにはどうすればよいですか?フォームを参照してFRMPFC_folderCreatorWindow.Controlsを使用する必要があると思いますが、ほとんどのコントロールはフレーム内にネストされているため、現在のコードがフォームに作用するのか、ボタンが配置されているフレームだけに作用するのかわかりません。どんな助けでも大歓迎です。

Private Sub PFC_createFolders(Basepath, currentControl, parentFolder, parentGroup)

Dim cCont As Control
Dim createSubFolder As String
Dim fs As Object

Set fs = CreateObject("Scripting.FileSystemObject")

'Check if the project folder already exists and if so, raise an error and exit
    MkDir Basepath & "\" & parentFolder

    'Create the superceded documents folder in every 2nd generation folder
    MkDir Basepath & "\" & parentFolder & "\" & "_Old versions"
    For Each cCont In Me.Controls
        If TypeName(cCont) = "CheckBox" Then
            If cCont.GroupName = parentGroup Then
                If cCont.Value = True Then
                    If cCont.Name <> currentControl Then
                        createSubFolder = cCont.Caption
                        NewFolder = Basepath & "\" & parentFolder & "\" & createSubFolder
                        If fs.folderexists(NewFolder) Then
                            'do nothing
                        Else
                            'Create 3rd generation folder
                            MkDir NewFolder

                            'Create the superceded documents folder in every 3rd generation folder
                            MkDir NewFolder & "\" & "_Old versions"

                            'Create hard-coded subfolders within Confirmit Exports
                            If createSubFolder = "Confirmit Exports" Then
                                MkDir Basepath & "\" & parentFolder & "\" & createSubFolder & "\Triple S"
                                MkDir Basepath & "\" & parentFolder & "\" & createSubFolder & "\Word Export"
                                MkDir Basepath & "\" & parentFolder & "\" & createSubFolder & "\Survey Definition"
                                MkDir Basepath & "\" & parentFolder & "\" & createSubFolder & "\Data"
                                MkDir Basepath & "\" & parentFolder & "\" & createSubFolder & "\Data" & "\" & "Early Data"
                                MkDir Basepath & "\" & parentFolder & "\" & createSubFolder & "\Data" & "\" & "Final Data"
                            End If

                        End If

                    End If

                End If

            End If

        End If

    Next cCont

   End Sub
4

1 に答える 1

0

これを試してみたところ、Me.Controlsを次のコードに置き換えると機能します。

    FRMPFC_folderCreatorWindow.Controls
于 2012-07-24T15:33:29.020 に答える