如何在VBA中抵消一个范围的2个单元格?

我正在写一个macros来检查一个值是否为真,如果是这样的话,将该行的第一个单元格存储起来。 例如:

  | 191 | c:users \ public \ test.dbf | True |  
 | 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 

由于法国(??)variables,很难理解这个代码在做什么。 如果你能描述一下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%正确的(因为代码的function对我来说是不清楚的),并且可能偏移是错误的(在上面的例子中是-1和-2)。 但我希望这给你一个解决你的问题的想法!

在我看来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