是否可以选择要复制到最后一项的范围?
Sheets("Design").Select
Range("A1:C200").Copy
'My data only runs until E48 and Im left with 152 blancs.
所以现在它从A1复制到E200,但是如何编辑上面的代码,所以它只选择直到最后一段数据,在我的情况下是E48? (这是可变的)
谢谢!
@Jean
在我的Excel工作表中,我有从A1-A18运行的数据,B是空的和C1-C2。现在我想复制包含值的所有单元格。
With Range("A1")
Range(.Cells(1, 1), .End(xlDown).Cells(20, 3)).Copy
End With
这将复制A1-C20中的所有内容,但我只希望A1-A18和C1-C2看起来好像包含数据。但它需要以一种方式形成,一旦我有B或我的范围扩展数据,这些也会被复制。
这可能更清楚一点吗?
关于复制/粘贴情况;
我目前使用此
粘贴appWD.Selection.PasteSpecial ' So it copies the formats too?
'In your case, do you mean I should do it like this?
Range(.Cells(1, 1), .End(xlDown).Cells(20, 3)).Copy Destination:=appWD.Selection.PasteSpecial
答案 0 :(得分:2)
这应该有效:
a1 = Range("a1").Address
lastcell = Range("E1").End(xlDown).Address
Range(a1, lastcell).Copy
答案 1 :(得分:2)
这有效:
With Range("A1")
Range(.Cells(1, 1), .End(xlDown).Cells(1, 5)).Copy
End With
如果您需要不同数量的列,请更改“5”。
另外,我学到了很多方法:尽可能避免复制/粘贴!复制并粘贴使用剪贴板。其他程序可能会在代码运行时读取/写入剪贴板,这将导致疯狂的,不可预测的结果。但是,可以安全地复制到同一行的目标范围,即执行此操作
Range(.Cells(1, 1), .End(xlDown).Cells(1, 5)).Copy myDestinationRange
而不是这个
Range(.Cells(1, 1), .End(xlDown).Cells(1, 5)).Copy
myDestinationRange.Paste
后者使用剪贴板而前者不使用剪贴板。
答案 2 :(得分:0)
如果这适合你,我最喜欢的是CurrentRegion:
Range("A1").CurrentRegion.Copy Destination:=Sheet2.Range("a1")