VBA嵌套循环和do INTILL循环
我需要一个循环结构来检查单元格的范围,如果单元格和该范围内的单元格彼此相等,那么字体应该变成红色。我的问题是我的do-until循环无法进入。这就是我现在拥有的。 `VBA嵌套循环和do INTILL循环,vba,excel,Vba,Excel,我需要一个循环结构来检查单元格的范围,如果单元格和该范围内的单元格彼此相等,那么字体应该变成红色。我的问题是我的do-until循环无法进入。这就是我现在拥有的。 ` Dim finalrow尽可能长 finalrow=工作表(“冗余”)。单元格(工作表(“冗余”)。行。计数,“D”)。结束(xlUp)。行 暗z一样长 暗w长 变暗,变长 w=2 r=0 对于z=2到最终箭头 如果范围(“L”&z)=范围(“L”&z+1)和范围(“J”&z)范围(“J”&z+1),则 直到范围(“L”&z)=范
Dim finalrow尽可能长
finalrow=工作表(“冗余”)。单元格(工作表(“冗余”)。行。计数,“D”)。结束(xlUp)。行
暗z一样长
暗w长
变暗,变长
w=2
r=0
对于z=2到最终箭头
如果范围(“L”&z)=范围(“L”&z+1)和范围(“J”&z)范围(“J”&z+1),则
直到范围(“L”&z)=范围(“L”&z+1)和范围(“J”&z)范围(“J”&z+1)
如果单元格(w,4)=单元格(z+1,4+r),则
单元格(w,1)。Font.ColorIndex=3
单元格(z+1,1)。Font.ColorIndex=3
如果r=4,则
w=w+1
如果结束
如果结束
r=r+1
环
如果结束
下一个z
`
我把它改成这个,但是当它即将进入do-while循环时,它会一起退出循环
`
z=2到最终路径的
Do While(范围(“L”&z)=范围(“L”&z+1)和范围(“J”&z)范围(“J”&z+1))
如果单元格(w,4)=单元格(z+1,4+r),则
单元格(w,1)。Font.ColorIndex=3
单元格(z+1,1)。Font.ColorIndex=3
如果r=4,则
w=w+1
如果结束
如果结束
r=r+1
环
下一个z
`如果您这样做,请使用“and”操作符而不是“&”。
Range(“L”&z)=Range(“L”&z+1)和Range(“J”&z)Range(“J”&z+1)
您正在比较范围对象。相反,您要做的是比较这些范围对象中的值。所以用这个代替
范围(“L”&z).值=范围(“L”&z+1).值和范围(“J”&z).值范围(“J”&z+1).值
但是,当您使用单元格(行、列)
时,不会出现此问题
但是我很好奇,是否不可能使用
条件格式
?将中的&
替换为,如果为,并且&
是字符串串联运算符。你想要和。我认为你永远无法进入你的循环。这个条件和上面的If看起来是一样的。对。如果有什么事,那就一直做下去。你永远不会进入Do循环。也许你的意思是“边做边做”。Do-Until-Range(“L”&z)Range(“L”&z+1)或Range(“J”&z)=Range(“J”&z+1)
这仍然不能解决他的问题,因为他的逻辑不正确Value
是Range
的默认成员,所以在本例中实际上不需要指定.Value
(尽管我更喜欢它的可读性)。
Dim finalrow As Long
finalrow = Worksheets("Redundancy").Cells(Worksheets("Redundancy").Rows.Count, "D").End(xlUp).Row
Dim z As Long
Dim w As Long
Dim r As Long
w = 2
r = 0
For z = 2 To finalrow
If Range("L" & z) = Range("L" & z + 1) & Range("J" & z) <> Range("J" & z + 1) Then
Do Until Range("L" & z) = Range("L" & z + 1) & Range("J" & z) <> Range("J" & z + 1)
If Cells(w, 4) = Cells(z + 1, 4 + r) Then
Cells(w, 1).Font.ColorIndex = 3
Cells(z + 1, 1).Font.ColorIndex = 3
If r = 4 Then
w = w + 1
End If
End If
r = r + 1
Loop
End If
Next z
For z = 2 To finalrow
Do While (Range("L" & z) = Range("L" & z + 1) And Range("J" & z) <> Range("J" & z + 1))
If Cells(w, 4) = Cells(z + 1, 4 + r) Then
Cells(w, 1).Font.ColorIndex = 3
Cells(z + 1, 1).Font.ColorIndex = 3
If r = 4 Then
w = w + 1
End If
End If
r = r + 1
Loop
Next z