【问题标题】:Excel VBA Copy and Paste (without using Copy+Paste functions) on empty rowExcel VBA 在空行上复制和粘贴(不使用复制+粘贴功能)
【发布时间】:2015-08-22 13:07:03
【问题描述】:

我以前做过这个,我一直在摸索为什么我无法弄清楚。

我正在尝试从一张表中提取数据并将其粘贴到下一行的另一张表中。 我之前没有使用“复制”或“粘贴”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

【问题讨论】:

    标签: vba excel copy paste


    【解决方案1】:

    试试这个:

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多