【问题标题】:Paste in next row of table when using paste special使用特殊粘贴时粘贴到表格的下一行
【发布时间】:2022-08-16 06:09:31
【问题描述】:

我将一个外部链接表复制并粘贴到另一个表中作为唯一值。

我需要继续这个过程而不覆盖旧数据。即使我在“lastrow”注释中添加了代码,代码也会将新数据粘贴到旧数据上。

我以前在使用普通粘贴代码时使用过这个,但这是我第一次尝试使用 pastespecial。

Sub Check() \'compares old and new values
    If Worksheets(\"Test\").Range(\"N2\").Value <> Worksheets(\"Test\").Range(\"N5\").Value Then
        Worksheets(\"Test\").Activate
        Worksheets(\"Test\").Range(\"TestTable\").Select
        Selection.Copy
        Worksheets(\"Sheet1\").Activate
        Worksheets(\"Sheet1\").Range(\"Destination\" & lastrow).PasteSpecial xlPasteValues
    ElseIf Worksheets(\"Test\").Range(\"O2\").Value <> Worksheets(\"Test\").Range(\"O5\").Value Then
        Worksheets(\"Test\").Activate
        Worksheets(\"Test\").Range(\"TestTable\").Select
        Selection.Copy
        Worksheets(\"Sheet1\").Activate
        Worksheets(\"Sheet1\").Range(\"Destination\" & lastrow).PasteSpecial xlPasteValues 
    End if

如何将数据粘贴到下一个可用行中?

  • 你也可以提供你的代码行lastrow = ...吗?
  • 它在我上面代码的第 6 行和第 12 行
  • 您的代码中没有以lastrow = ... 开头的行。换句话说,您在哪里/如何为变量lastrow 赋值?
  • lastrow 是一个变量。您需要为其分配一个值。例如,this 是关于 SO 处理如何查找最后一行的规范答案。如果要查找表中的最后一行,请参阅this
  • 旁注:你想在你的代码中avoid using Select

标签: excel vba paste


【解决方案1】:

如果您没有将“lastrow”视为变量,则代码将不起作用。 “lastrow”本身不是一个Visual Basic命令,你必须先自己做一个。

Dim lastrow As ______

我如何找到最后一行通常是通过执行以下操作:

Range(Range("W1"), Range("Y1").End(xlDown)).select

这是从 W1:Y____ 中选择范围的示例。空白是列中包含值的最后一行。 ".End(xLDown) 表示它向下查找列中值列表的末尾。 我希望这有帮助

【讨论】:

  • 请考虑阅读this,它指出了End(xlDown) 的局限性,并提出了更稳健的方法。
  • 正如你所看到的,我是一个新的贡献者,所以这非常有帮助。谢谢@BigBen
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多