1

値が true かどうかをチェックするマクロを作成しています。true の場合は、行の最初のセルを取得して保存します。例えば:

|191|c:users\public\test.dbf |真 |  
|192|c:users\public\test2.dbf |False|  
|193|c:users\public\test2.dbf |False|

この配列をループしたいのですが、値が True の場合は、191 と c:users\public\test.dbf を格納する必要があります (この例では、格納する実際の値は行によって異なります)。

これが私のコードです:

For Each strPath In Worksheets("OPTIONS").Range("F2:H6")
    newChemin = strPath
    If strPath <> True And strPath <> False Then Chemin = strPath

    If strPath.Value = "True" Then
        For Each Cell In Worksheets("OPTIONS").Range("F2:F6")
            If Cell = Chemin Then
                strChemin = Chemin
                Exit For
            End If
        Next Cell

        Set wsSheet1 = wbBook.Worksheets("DB" & strChemin)        
        If strPath.Value = "TRUE" Then
            If FichierExiste(Chemin) Then
                Line = Line + 1
            Else
                Chemin = Worksheets("OPTIONS").Cells(7, 7).Value & "\" & strChemin & "\ancretbd.mdb"
                If FichierExiste(Chemin) Then
                    '* Appel de la Method mod_Importation
                    Call Importation_Totale
                Else
                    MsgBox "Desolé, le fichié demandé n'existe pas !"
                End If
            End If
        End If
    End If
Next strPath
4

2 に答える 2

1

フランス語 (??) 変数のため、このコードが何をしているのかを理解するのは非常に困難です。ケミンとは何かを説明できれば、行のどの部分を参照しているのかを理解しやすいかもしれません。

ただし、strPath は実際には Range であるため、単純にそのオフセットを参照できます。

For Each strPath In Worksheets("OPTIONS").Range("F2:H6")
    If strPath.Value = "True" Then
        Set wsSheet1 = wbBook.Worksheets("DB" & strPath.Offset(0, -1).Value
        If FichierExiste(strPath.Offset(0, -2).Value) Then
        Line = Line + 1
        Else
            Chemin = Worksheets("OPTIONS").Cells(7, 7).Value & "\" & strChemin & "\ancretbd.mdb"
            If FichierExiste(Chemin) Then
                 '* Appel de la Method mod_Importation
                 Call Importation_Totale
            Else
                MsgBox "Desolé, le fichié demandé n'existe pas !"
            End If
        End If
    End If
Next strPath

これは 100% 正しくない可能性があり (コードの機能がよくわからないため)、オフセットが間違っている可能性があります (上記の例の -1 と -2)。しかし、これで問題を解決するためのアイデアが得られることを願っています!

于 2012-11-06T15:13:11.557 に答える
0

列HはTRUEまたはFalseを含む列であるように思われます。この場合、この列をチェックし、それに応じて列FとGを更新するだけであれば、この簡略化されたコードで次のことができます。

For Each strPath In Worksheets("OPTIONS").Range("H2:H6")
     If strPath.Value = "True" Then
         Range("F" & strPath.Row).Value = "191"
         Range("G" & strPath.Row).Value = "c:users\public\test.dbf"

     End If
Next
于 2012-11-06T15:27:36.523 に答える