VBA嵌套循环和do INTILL循环

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)=范

我需要一个循环结构来检查单元格的范围,如果单元格和该范围内的单元格彼此相等,那么字体应该变成红色。我的问题是我的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)=范围(“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