不复制到A列时,无法将数据从一个Excel工作表复制到另一个工作表

时间:2015-03-09 14:15:44

标签: excel vba

我有这段代码:

Sub Button26_Click()
Dim s1, s2

    Set s1 = Worksheets("Invoice Generator")
    Set s2 = Worksheets("Past Invoices")

    With s2.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).EntireRow
        .Cells(, "a").Value = s1.Range("f27").Value
    End With
End Sub

单击按钮时,将单元格f27(最初)从第1页复制到第2页(每次在新行上)。但是,如果我改变" a"对于任何其他单元格引用,数据只会被复制一次 - 后续点击不起作用。

有人有什么想法吗?感谢。

1 个答案:

答案 0 :(得分:0)

您正在设置位置,从A列的底部开始,向上看第一个非空白单元格,然后向下偏移一行到空白单元格。如果你从这个位置开始,但是将值填充到从B列开始的行中,那么你永远不会在A列中填充那个空单元格,因此对同一例程的后续调用将重新定位到完全相同的位置。如果要将列B用作目标,则需要根据列B中的第一个空白单元格而不是列A来定位新的值传输。

Dim targetCOL as long
targetCOL = 2
With s2.Cells(Rows.Count, targetCOL).End(xlUp).Offset(1, 0).EntireRow
    .Cells(, targetCOL).Value = s1.Range("f27").Value
End With

由于您必须更改定位方法和值的目标的列,因此将字母列引用或数字列索引放入变量是有意义的,以便更改它将在两者中更改它地方。在上面提到的修改中,我使用了列的数字索引来设置列B.