我有一些适用于两列的 VBA 代码:A 列和 B 列。基本上,它遍历 B 列,并尝试在 A 列中找到每个 B 列值。此外,A 列中的某些值有一个单元格(内部)蓝色的颜色。
所以可能有3个结果:
- 如果在 A 列中未找到 B 列值,则该 B 列值将其单元格(内部)颜色设置为红色。
- 如果在 A 列中找到 B 列值,并且 A 列中的值具有蓝色单元格(内部)颜色,则该 B 列值的单元格(内部)颜色设置为黄色。
- 如果在 A 列中找到 B 列值,并且 A 列中的值没有蓝色单元格(内部)颜色,则该 B 列值将其单元格(内部)颜色设置为绿色。
第 1 点有效,但是用于分隔第 2 点和第 3 点的 IF 检查不起作用。所有这些情况都会自动转到第 3 点。
有人可以识别问题吗?
代码:
Sub Looper()
Dim i As Integer
Dim Sel As String
Dim MoveDown As String
Dim sourceVal As String
Dim Program As String
Dim i2 As Integer
Dim MoveDown2 As String
Dim Sel2 As String
Dim destVal As String
Dim found As Boolean
i = 2
MoveDown = "YES"
MoveDown2 = "YES"
i2 = 2
Do Until MoveDown = "DONE"
Sel = "B" + Replace(Str(i), " ", "")
sourceVal = Range(Sel).Value
If Range(Sel).Value = "" Then
MoveDown = "DONE"
Else
MoveDown2 = "YES"
i2 = 2
found = False
Do Until MoveDown2 = "DONE"
Sel2 = "A" + Replace(Str(i2), " ", "")
destVal = Range(Sel2).Value
If Range(Sel2).Value = "" Then
MoveDown2 = "DONE"
Else
If destVal = sourceVal Then
If Range(Sel2).Interior.Color = vbBlue Then
Range(Sel).Interior.Color = vbYellow
Else
Range(Sel).Interior.Color = vbGreen
End If
found = True
End If
End If
i2 = i2 + 1
Loop
If found = False Then
Range(Sel).Interior.Color = vbRed
End If
End If
i = i + 1
Loop
End Sub