Vba 特殊粘贴的语法错误

Vba 特殊粘贴的语法错误,vba,excel,syntax,paste,Vba,Excel,Syntax,Paste,有人能告诉我为什么上面的语句是语法错误,以及如何让语句允许我使用paste special或paste value吗?复制方法只有一个(可选)参数:Destination。这是您要复制到的范围 PasteSpecial是一种单独的方法。您可以使用Copy,然后使用单独的语句来执行粘贴 你把这两种方法混为一谈了。您要么要立即复制到目标,要么要复制然后粘贴,需要两个单独的语句。例如: Cells(R, DataCol).Resize(, ColumnCount).Copy Cells(R, Data

有人能告诉我为什么上面的语句是语法错误,以及如何让语句允许我使用paste special或paste value吗?

复制方法只有一个(可选)参数:Destination。这是您要复制到的
范围

PasteSpecial
是一种单独的方法。您可以使用
Copy
,然后使用单独的语句来执行粘贴

你把这两种方法混为一谈了。您要么要立即复制到目标,要么要复制然后粘贴,需要两个单独的语句。例如:

Cells(R, DataCol).Resize(, ColumnCount).Copy Cells(R, DataCol) _ 
.Offset(RowOffset * (R -  StartRow), ColOffset).PasteSpecial xlValues

简单地说,有一些可用的语法,但你把它们弄混了。因此,最常用的语法如下:

Cells(R, DataCol).Resize(, ColumnCount).Copy
Cells(R, DataCol).Offset(RowOffset * (R -  StartRow), ColOffset).PasteSpecial xlValues

无需仅复制/粘贴值-您可以直接分配:

'A)- all in one line
Range().Copy Range()   'range to copy >> destination range

'B)- instructions are in separate lines
Range().Copy           'range to copy
Range().PasteSpecial xlValues   'destination range

'C)- instructions are in separate lines
Range().Copy           'range to copy
Sheets().Paste          'destination sheet, activecell/default cell in destination sheet

反应很好,效果很好,很有教育意义。还有一个问题一直困扰着我。为什么复制多个单元格块时,例如A1:D1范围,应用工作表函数“按值更改”,目标为范围-我将获得四次更改的值,但是在更改的列中包含偏移量时,excel仅识别粘贴操作的第一列(本例中为A1)我不明白你的意思。如果我复制并粘贴一个区域,它只会触发一个更改事件。也许您应该启动一个新线程并提供一些代码。OK就可以了。实际上我是倒着写的。当我像上面的例子那样对一个单元格块使用偏移量时,当我使用块中的最后一个单元格作为目标时,excel无法识别更改。但是,当我使用单元格的第一个块时,Excel会给我4个val的change by val,target as range not recognized@andrew gibson
With ActiveSheet.Cells(R, DataCol)
   .Offset(RowOffset * (R -  StartRow), ColOffset).Resize(,ColumnCount).Value= _
                        .Resize(, ColumnCount).Value
End With