繁体   English   中英

VBA复制到不同的范围

[英]vba to copy to different ranges

我有一张名为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太疯狂了,所以我认为我做错了。

任何建议将不胜感激。

您仅需要目的地的左上角单元格。 从下向上查找最后使用的单元格,然后向下偏移一行。

with ws1
    ws.Range("E" & i & ":K" & i).Copy .cells(.rows.count, "A").end(xlup).offset(1, 0)
end with

您可能希望将其放在应用填充颜色的行上方,否则您也将复制该填充颜色。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM