【问题标题】:Syntax error with paste special特殊粘贴的语法错误
【发布时间】:2013-06-19 03:52:08
【问题描述】:
Cells(R, DataCol).Resize(, ColumnCount).Copy Cells(R, DataCol) _ 
.Offset(RowOffset * (R -  StartRow), ColOffset).PasteSpecial xlValues

谁能告诉我为什么上面的语句是一个语法错误,以及我怎样才能让语句允许我使用特殊粘贴或粘贴值?

【问题讨论】:

    标签: vba excel syntax paste


    【解决方案1】:

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

    With ActiveSheet.Cells(R, DataCol)
       .Offset(RowOffset * (R -  StartRow), ColOffset).Resize(,ColumnCount).Value= _
                            .Resize(, ColumnCount).Value
    End With
    

    【讨论】:

      【解决方案2】:

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

      PasteSpecial 是一个单独的方法。您将使用Copy,然后使用单独的语句来执行 PasteSpecial。

      您混淆了这两种方法。您要么想立即复制到目标,要么先复制然后粘贴特殊,这需要两个单独的语句。例如:

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

      【讨论】:

      • 反应很好,效果很好,而且很有教育意义。还有一个问题一直困扰着我。为什么当你复制一个包含多个单元格的块时,即。
      • 让我们说一个范围 A1:D1,并且您应用工作表函数“更改”按值,目标为范围 - 我将获得四次更改的值,但是当在更改的列中包含偏移量时excel只识别粘贴操作的第一列(本例为A1)?
      • 我不清楚你的意思。如果我复制并粘贴一个区域,它只会触发一个 Change 事件。也许你应该开始一个新线程并提供一些代码。
      • OK 就可以了。我实际上是倒着写的。当我使用偏移量作为上面示例的单元格块时,当我使用块中的最后一个单元格作为目标时,excel 无法识别更改。但是,当我使用单元格的第一块时,Excel 给了我 4 val 的变化
      • 按 Val 更改,目标范围未被识别@andrew gibson
      【解决方案3】:

      总之,有一些可用的语法,但你把它们弄混了。因此,最流行的语法如下:

      '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
      

      【讨论】:

        猜你喜欢
        • 2017-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多