如何在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