复制到最后一段数据

时间:2011-03-16 15:06:58

标签: excel excel-vba ms-word copy vba

是否可以选择要复制到最后一项的范围?

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

3 个答案:

答案 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")