我正在尝试将一行从一张纸复制到另一张纸,然后尝试根据单元格值更改多个单元格颜色。然而,最后一个单元格是唯一改变颜色的单元格。我是 VBA/宏新手。下面是代码。谢谢!
For k = 1 To column_count
If ws1.Cells(i, k).value <> ws2.Cells(j, k).value Or (Not IsEmpty(ws1.Cells(i, k).value) And IsEmpty(ws2.Cells(j, k).value)) Or (IsEmpty(ws1.Cells(i, k).value) And Not IsEmpty(ws2.Cells(j, k).value)) Then
ws1.Rows(i).Copy Destination:=ws3.Rows(lastRow3)
'change the cell color to red
ws3.Rows(lastRow3).Cells(1, k).Interior.color = RGB(255, 0, 0)
End If
Next k
您可能会多次复制整行,因此每次复制时,您都会覆盖之前的任何红色填充,并且只有最后填充的单元格会保持红色。
您只需复制该行一次:
Dim vi, vj, copied As Boolean
For k = 1 To column_count
vi = ws1.Cells(i, k).Value
v2 = ws2.Cells(j, k).Value
copied = False 'reset flag
If vi <> vj Or (Not IsEmpty(vi) And IsEmpty(vj)) Or _
(IsEmpty(vi) And Not IsEmpty(vj)) Then
If Not copied Then 'row has been copied?
ws1.Rows(i).Copy Destination:=ws3.Rows(lastRow3)
copied = True 'flag as copied
End If
'change the cell color to red
ws3.Rows(lastRow3).Cells(1, k).Interior.Color = vbRed
End If
Next k
这是由复制语法导致的,它覆盖了之前的更改。