我有一张名为Consulta
的表格,每当我更改列K上的值时,它会将范围E:K的颜色更改为绿色或白色(如果它为空)。
如果行为绿色,我还想将该行复制到名为E-mail
的工作表中。这是我迄今为止尝试过的,并且有效:
Sub ChangeColor()
Dim ws As Worksheet, ws1 As Worksheet, i As Long, lastrow As Long
Set ws = Sheets("Consulta")
Set ws1 = Sheets("E-mail")
lastrow = ws.Cells(Rows.Count, "E").End(xlUp).Row
For i = 5 To lastrow
If ws.Range("K" & i) <> "" Then
ws.Range("E" & i & ":K" & i).Interior.ColorIndex = 43
ws.Range("E" & i & ":K" & i).Copy ws1.Range("A" & i & ":G" & i)
Else
ws.Range("E" & i & ":K" & i).Interior.ColorIndex = 2
End If
Next
If ws.Range("E" & i & ":K" & i).Interior.ColorIndex = 2 Then
ws1.Range("A" & i & ":G" & i).Clear
End If
End Sub
我的问题在于以下这一行:
ws.Range("E" & i & ":K" & i).Copy ws1.Range("A" & i & ":G" & i)
我实际上想要复制到不同的范围而不是工作表E-mail
中的相应范围(例如,如果第一个匹配是E3:K3我要复制到A2:K2。如果第二个匹配是E34:K34我想把它复制到A3:K3,所以它去了)。
我尝试使用另一个循环,但我的Excel变得疯狂所以我认为我做错了。
任何建议都将受到赞赏。
答案 0 :(得分:3)
您只需要左上角的单元格作为目的地。从下往上查看最后使用过的单元格并向下偏移一行。
with ws1
ws.Range("E" & i & ":K" & i).Copy .cells(.rows.count, "A").end(xlup).offset(1, 0)
end with
您可能希望将其置于应用填充颜色的线上方,或者您也将复制填充颜色。