如何使用nextRow变量(电子表格中的下一个开放行)作为变量,然后将其“复制”到其中?

时间:2019-07-08 08:39:38

标签: excel vba

我有一个ERP系统,可以将信息从交货单复制到档案中。我的问题是,我找不到一种方法来声明代码以找到下一个可用行(将在其中存储数据的位置)作为变量,然后将数据复制过来,我只能在没有变量的情况下进行操作。 / p>

我尝试使下一个可用行的代码变暗,而不是变暗,并尝试将要从中复制数据的单元格作为变量而不是。

我还尝试过声明要从其中复制数据的单元格作为变量(shipFrom),然后将shipFrom复制到下一个可用行中,而没有将其声明为变量,但仍然不执行任何操作。

代码:

Dim nextRow As Range
Dim shipFrom As String
shipFrom = Sheets("DN").Range("D9").value
Set nextRow = Sheets("Arkiv").Range("B" & Rows.Count).End(xlUp).Offset(1, 0)

shipFrom.Copy nextRow

运行代码时没有错误消息,只是没有结果... 我期望D9中的值被声明为shipFrom,以复制到nextRow,这是我用于下一个可用行的变量。

1 个答案:

答案 0 :(得分:1)

  1. 您需要声明shipFrom As Range
  2. 并使用Set shipFrom为其设置范围。

因为不能在字符串上使用.Copy。它仅适用于范围对象。

Dim shipFrom As Range
Set shipFrom = Sheets("DN").Range("D9")

Dim nextRow As Range
Set nextRow = Sheets("Arkiv").Range("B" & Rows.Count).End(xlUp).Offset(1, 0)

shipFrom.Copy nextRow 'copy the whole cell shipFrom to nextRow 

请注意,.Copy将使用其所有格式复制整个单元格。仅复制值的替代方法是

Dim shipFrom As String
shipFrom = Sheets("DN").Range("D9").Value

Dim nextRow As Range
Set nextRow = Sheets("Arkiv").Range("B" & Rows.Count).End(xlUp).Offset(1, 0)

nextRow.Value = shipFrom 'set the value of nextRow equal to the value shipFrom