如何删除使用VBA宏复制粘贴的范围中的lates值?

时间:2016-12-16 02:13:09

标签: excel vba excel-vba macros

以下是我在一个范围内将值粘贴到另一个工作表的代码。但我想知道,现在我已经复制并粘贴了这些值,如何创建一个总是删除我粘贴的最新值范围的宏?

(或者,如果可能的话,如何创建一个宏,我可以选择要删除的值范围?)

顺便说一下,("bookmark")是我正在复制值的工作表中E6:P6的值范围。

如果有人可以帮助我,我真的很感激。

Sub AddBookmark()

    Worksheets("Dashboard").Range("Bookmark").Copy

    Worksheets("Bookmarks").Cells(Rows.Count, "A").End(xlUp).Offset(4, 0).PasteSpecial Paste:=xlPasteValues
    Worksheets("Bookmarks").Cells(Rows.Count, "A").End(xlUp).Offset(-18, 0).PasteSpecial Paste:=xlPasteFormats

    Application.CutCopyMode = False

End Sub

1 个答案:

答案 0 :(得分:0)

如果Bookmark范围的大小是1行乘12列(即E6:P6),那么您当前的代码正在写入先前写入的行4行中的A:L列行。因此,要删除您创建的最新条目,只需找到Worksheets("Bookmarks")列A中的最后一个非空单元格,并删除该行的A:L列。

所以

Sub DeleteBookmark()
    With Worksheets("Bookmarks")
        .Range("A" & .Rows.Count).End(xlUp).Resize(1, 12).Clear
    End With
End Sub

P.S。请注意,在上面的代码中,Rows.Count的资格与其所指的工作表有关。在您现有的代码中,您没有这样做,这可能会在某些情况下导致错误。您的代码应该使用,例如,

Worksheets("Bookmarks").Cells(Worksheets("Bookmarks").Rows.Count, "A").End(xlUp).Offset(4, 0).PasteSpecial Paste:=xlPasteValues

P.P.S。我不确定为什么你的代码在执行PasteFormats时会将最后一个单元格偏移-18行。这是故意的吗?