2013-12-10 81 views
3

我已经尝试了多种方法来做这个粘贴,但他们都没有工作。我对编程非常陌生,所以我需要一些帮助来理解为什么我不断收到错误1004或5.我甚至都不明白这些错误是什么意思。Excel VBA:粘贴问题

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

或...粘贴,... PasteSpecial的= xlpasteall,... PasteSpecial的粘贴:= xlpasteall,范围(将细胞( “B” & i))的粘贴,范围( “B” &我。 ),如上所述。

我完全失败。程序中的其他一切都很好。我只是无法让它将我的复制值粘贴到所需的单元格中(全部由特定数量的列抵消,但在同一行中)。帮助和解释都赞赏。

编辑感谢我收到的答案,我能解决我的问题。我在任何地方都找不到合适的答案。谢谢!

我使用的解决方案是最简单的一个:再次

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

感谢谁回答的海报,和谁评论的人。我让这太难了。

+0

欢迎!这不是一个答案,只是一个评论:当一个简单的'Cells(R1,C1).Value = Cells(R2,C2).Value'可以更好,更快地完成工作时,通常初学者会尝试复制和粘贴。这对你有用吗? – stenci

+0

当你使用'Cells'时,你指的是一张纸的整个'Range',并且你无法使用'Offset',因为没有地方可以抵消。所以你会得到错误'1004'。要了解如何复制和粘贴的方法,请参阅BK201的帖子。它应该让你开始。 – L42

+0

另外,我很好奇你的代码中“hotcell”的值是多少。 'Cells'我认为接受数字参数。如果'hotcel'的值不是一个数值,你会得到'错误5'。看到我的帖子的完整说明 – L42

回答

3

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

没有粘贴方法

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 

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

希望这会有所帮助。

+0

非常有用谢谢你! – lizard053

3

说明:

Cells.Offset(0,1).PasteSpecial 

这会给Error 1004因为Cells指整个片范围,也没有办法为你弥补它。

Cells(hotcell).Copy 

这会给你的Error 5如果hotcell值不是数字。
我认为Cells只接受数字参数,如果您使用上述语法。

如何使用细胞:(Excel 2007和高达版本)

1。定义R,C的语法:将细胞(ROWNUMBER,得到columnnumber)

Cells(1,1) 'refers to Range("A1") 
Cells(1,2) 'refers to Range("B1") 
Cells(2,1) 'refers to Range("A2") 

2.使用一个号码只

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

3,采用细胞仅

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

四,使用数字和字母(这只适用于单元格(RowNum,ColNum)语法)

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

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

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

以上会工作,因为你ResizeCells首先你做Offset之前。
A1:A5的值现在将被复制到B1:B5。
希望这可以帮助你。

+0

非常感谢您提供的所有信息!它真的帮了大忙。 – lizard053