[英]How to offset 2 cells of a range in VBA?
我正在编写一个宏,用于检查值是否为true,如果是,则使用该行的第一个单元格并将其存储。 例如:
|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
由于法语(??)变量,很难理解这段代码在做什么。 如果您可以描述化学是什么,也许更容易理解您所指的行的哪一部分。
但是,由于您的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)。 但是我希望这能给您解决问题的思路!
在我看来,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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.