Excel VBA:粘贴问题

时间:2013-12-10 03:59:31

标签: excel vba excel-vba paste

我尝试了多种方法来执行此粘贴,但它们都没有工作。我对编程非常陌生,所以我需要一些帮助来理解为什么我一直得到错误1004或5.我甚至不明白这些错误是什么意思。

Cells(hotcell).Copy
Cells.Offset(0, 1).PasteSpecial

或... Paste,... PasteSpecial = xlpasteall,... pastespecial Paste:= xlpasteall,Range(Cells(“B”& i))。paste,Range(“B”& i)。粘贴,如上所述。

我完全失去了。该计划中的其他所有工作都很好。我只是无法将我复制的值粘贴到所需的单元格中(所有列都偏移了一定数量的列,但是在同一行中)。帮助和解释都赞赏。

编辑感谢我收到的答案,我能够解决我的问题。在我看的任何地方,我真的找不到一个好的答案。谢谢!

我使用的解决方案是最简单的解决方案之一:

rng.Offset(0, 1) = rng.Text

再次感谢回答的海报以及评论的海报。我太难了。

2 个答案:

答案 0 :(得分:5)

有很多方法可以解决这类问题,所以我会尝试列出一些我使用过的问题。

无粘贴方法

Sub CP1()
    'This basically just transfers the value without fuss.
    Dim Rng As Range
    Set Rng = Range("A1")
    Rng.Offset(0,1) = Rng.Value
End Sub

简单粘贴方法

Sub CP2()
    'This copies a cell exactly as it is.
    Dim Rng As Range
    Set Rng = Range("A1")
    Rng.Copy Rng.Offset(0,1) 'Read: Copy Rng to Rng.Offset(0,1).
    Application.CutCopyMode = False
End Sub

特殊粘贴方法

Sub CP3()
    'This copies the format only.
    Dim sRng As Range, tRng As Range
    Set sRng = Range("A1")
    Set tRng = sRng.Offset(0, 1)
    sRng.Copy
    tRng.PasteSpecial xlPasteFormats
    Application.CutCopyMode = False
End Sub

尝试从上面三个中确定您想要的并相应地进行修改。 ;)

希望这有帮助。

答案 1 :(得分:4)

说明:

Cells.Offset(0,1).PasteSpecial

这会给Error 1004 Cells,因为Cells(hotcell).Copy 指的是整个工作表范围,并且您无法抵消它。

Error 5

如果hotcell的值不是数字,则会显示Cells 我认为如果你使用上面的语法,Cells(1,1) 'refers to Range("A1") Cells(1,2) 'refers to Range("B1") Cells(2,1) 'refers to Range("A2") 只接受数字参数。

如何使用单元格(Excel 2007及更高版本)

1.定义R,C语法:Cells(RowNumber,ColumnNumber)

Cells(1) 'refers to Range("A1")
Cells(2) 'refers to RAnge("B1") and so on
Cells(16385) 'refers to Range("A2")

2.仅使用数字

Cells.Copy 'copies the whole range in a sheet
Cells.Resize(1,1).Copy 'copies Range("A1")
Cells.Resize(1,1).Offset(0,1).Copy 'copies Range("B1")
Cells.Resize(2,1).Copy 'copies Range("A1:A2")

3.仅使用细胞

Cells(1, "A").Copy 'obviously copies A1
Cells(1, "A").Resize(2).Copy 'copies A1:A2

4.使用数字和字母(这仅适用于 Cells(RowNum,ColNum)语法)

Cells.Resize(5,1).Copy Cells.Resize(5,1).Offset(0,1)

现在,如何复制和粘贴。
假设您要复制A1:A5并粘贴到下一列B。

Resize

上述方法有效,因为在Cells之前Offset {{1}} {{1}}。{ A1:A5的值现在将被复制到B1:B5 希望这会对你有所帮助。