2016-12-16 64 views
0

下面是我在一個範圍內複製粘貼值到另一個表格的代碼。但是我想知道,現在我已經複製並粘貼了值,如何創建一個總是刪除我粘貼的最新值的宏?如何刪除使用VBA宏粘貼的範圍內的文本值?

(或者,如果可能的話,我該如何創建一個宏在那裏我可以選擇,我要刪除值的哪個範圍?)

順便說一句,("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

如果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 

附:請注意,在上面的代碼中,Rows.Count的資格與它所指的工作表一致。在你現有的代碼中,你沒有這樣做,在某些情況下會導致錯誤。你的代碼應該使用,例如,

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

P.P.S.我不確定爲什麼你的代碼在執行PasteFormats時將-18行的最後一個單元格偏移。那是故意的嗎?

+0

嘿,謝謝你的幫忙!它可以工作,但它只會刪除最新的行,我該如何改變它,以便刪除最新的19行? –

+0

您的問題表示您每次運行AddBookmark宏時只將E6:P6(即1行x 11列)複製到「書籤」工作表中。爲什麼要刪除'DeleteBookmark'宏中的19行? (FWIW - '.Range(「A」&.Rows.Count).End(xlUp).Offset(-18,0).Resize(19,12).Clear'會做,但我不明白**爲什麼**你想這樣做。) – YowE3K