复制后更改特定行中的多个单元格颜色

问题描述 投票:0回答:2

我正在尝试将一行从一张纸复制到另一张纸,然后尝试根据单元格值更改多个单元格颜色。然而,最后一个单元格是唯一改变颜色的单元格。我是 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
       
excel vba
2个回答
0
投票

您可能会多次复制整行,因此每次复制时,您都会覆盖之前的任何红色填充,并且只有最后填充的单元格会保持红色。

您只需复制该行一次:

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

0
投票

这是由复制语法导致的,它覆盖了之前的更改。

© www.soinside.com 2019 - 2024. All rights reserved.