2012-11-06 92 views
1

我正在寫一個宏來檢查一個值是否爲真,如果是這樣,則需要該行的第一個單元格並存儲它。例如:如何在VBA中抵消2個範圍的單元格?

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

欲遍歷這個數組,並且當值爲True我需要存儲191和c:\用戶公共\ 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 
+0

您需要多少次這樣做? – Brad

+0

請不要使用str編碼範圍對象'strPath',因爲它會混淆而不是澄清。將其更改爲(例如)'rPath'以獲得更一般的清晰度。 –

+0

因此,供參考 - 「Chemin」(法文)的意思是「Path」(英文),「FichierExiste」的意思是「FileExists」。你能否告訴我們你是如何存儲你想要保存的值?爲什麼你對'strPath.Value =「True」'有多重檢查? Line的變量是什麼? –

回答

1

因爲法國(??)變量,它是相當難以聽懂這段代碼是幹什麼的。 如果您可以描述chemin是什麼,也許更容易理解您所指的行的哪一部分。

但是,由於你的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在上面的例子)。但我希望這給你一個解決你的問題的想法!

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 
相關問題