列 A と列 B の 2 つの列で動作する VBA コードがあります。基本的には、列 B をループし、列 A の各列 B の値を見つけようとします。さらに、列 A の一部の値にはセル (内部) があります。ブルーの色。
したがって、次の 3 つの結果が考えられます。
- 列 B の値が列 A に見つからない場合、その列 B の値のセル (内部) の色は赤に設定されます。
- 列 B の値が列 A にあり、列 A の値のセル (内部) の色が青の場合、その列 B の値のセル (内部) の色は黄色に設定されます。
- 列 B の値が列 A にあり、列 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