当我再次运行我的宏时,如何从下一行复制

时间:2017-02-21 08:50:55

标签: vba excel-vba excel

我是VBA的新手,所以我只做录制宏和编辑。我在表格中有一些数据从公式中捕获,我需要“归档”它们,以便在更改源时,数据仍然存在。我录制了一个宏来复制行中的公式以将其粘贴到下一行,并在同一行上复制和粘贴数字,以便在更改源时数据不会更改。但是当我下次点击它时,我希望宏对下一行做同样的事情,我如何编辑我的代码呢?

Range("B20:K20").Select
Selection.Copy
Range("B21:K21").Select
ActiveSheet.Paste
Range("B20:K20").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

我不希望从第20行复制,而是希望宏从第21行复制并在下次运行宏时粘贴在第22行。请帮忙!谢谢!

2 个答案:

答案 0 :(得分:1)

你可以使用:

With Cells(Rows.Count, "B").End(xlUp).Resize(, 10) 
    .Copy .Offset(1)
    .Value = .Value
End With

,其中

  • Cells(Rows.Count, "B").End(xlUp)

    引用B列中最后一个非空单元格

  • .Resize(, 10)

    将引用的单元格扩展到跨度10列(即直到列K)

  • .Copy .Offset(1)

    将引用范围复制到

  • 下面的行
  • .Value = .Value

    仅在参考范围中留下值

答案 1 :(得分:0)

你只需要找到第一个空行,这样你就可以写到同一个空行。以下函数可以根据B列中的单元格为您提供第一个空行。

textPane.setMargin(new Insets(10, 5, 10, 5)); //top, left, bottom, right