以下是我在一个范围内将值粘贴到另一个工作表的代码。但我想知道,现在我已经复制并粘贴了这些值,如何创建一个总是删除我粘贴的最新值范围的宏?
(或者,如果可能的话,如何创建一个宏,我可以选择要删除的值范围?)
顺便说一下,("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
答案 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行。这是故意的吗?