VBA嵌套循环,使用do直到循环

时间:2017-11-10 22:11:25

标签: excel vba excel-vba

我需要一个循环结构来检查一系列单元格,然后如果单元格和范围内的单元格相等,那么字体应该变成红色。我的问题是我的直到循环不会进入。这就是我现在所拥有的。 `

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

` 我把它改成了这个,但是当它即将进入do while循环时它会一起退出循环。

`

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

`

2 个答案:

答案 0 :(得分:1)

如果你这样做;

Range("L" & z) = Range("L" & z + 1) and Range("J" & z) <> Range("J" & z + 1)

您正在比较Range对象。您想要做的是比较这些范围对象中的值。所以请改用它;

Range("L" & z).value = Range("L" & z + 1).value and Range("J" & z).value <> Range("J" & z + 1).value

但是,当您使用cells(row,column)时,您没有遇到此问题。

我很好奇,是不是可以使用conditional formatting代替?

答案 1 :(得分:0)

使用&#39;和&#39;运营商而不是&#39;&amp;&#39;。