Excel VBA 在空行上复制和粘贴(不使用复制+粘贴功能)

Excel VBA Copy and Paste (without using Copy+Paste functions) on empty row

我以前做过,但我一直在摸不着头脑,想不通。

我正在尝试从一个 sheet 中提取数据并将其粘贴到下一行的另一个 sheet 中。 我之前在不使用 "copy" 或 "paste" VBA 函数的情况下完成了此操作。我只是使用了值,我想通过这种方式让用户更轻松(没有随机复制的东西excel 剪贴板)

这是我的代码:

Sub SubmitChange()
row_number = 2

Do
DoEvents
Row_number = row_number + 1
item_in_review = Sheet44.Range("B" & row_number)
Loop Until item_in_review = ""

Sheet44.Range("B" & row_number) = Sheet43.Range(A6).Value

End Sub

试试这个:

Option Explicit

Sub SubmitChange()

    Dim lastRow As Long

    lastRow = Sheet44.Cells(Sheet44.Rows.Count, 2).End(xlUp).Row + 1

    Sheet44.Range("B" & lastRow).Value2 = Sheet43.Range("A6").Value2

End Sub

.

备注:

  • 您应该始终在模块顶部使用 Option Explicit

    • 它会强制你正确声明变量
  • 如果您在不做任何更改的情况下复制并粘贴了代码,则存在一个微妙的问题:

    • 你的变量"Row_number"定义在这个子(全局)范围之外
    • 在这个 sub 中你有第二个变量名为 "row_number"(小写 "r")
    • 循环递增全局变量"Row_number"
    • 但在最后一行中,值总是分配给 Sheet44.Range("B2")
    • "row_number"(此子的本地)永远不会像您期望的那样增加

另一个问题是这个Sheet43.Range(A6).Value应该是这个Sheet43.Range("A6").Value