Excel VBA Command to Clear the Clipboard

Stop users pasting after the macro is run

When using copy and paste in a macro it is a good idea to clear the clipboard at the end of the macro. If you don’t, the user could use paste to paste the last thing you had copied in the macro.

Luckily it is easy to clear the clipboard. It’s a one line command


Usually you place this command near the end of your macro. You can also include it after each paste in your code to make sure the clipboard is cleared between each copy and paste.

If you use error handling code you would place the command with all the code to run when the macro finishes.

Note: (Added 5 November 2018) The command above clears Excel’s clipboard, but it won’t clear the clipboard inside the VBA window itself eg if you copy text inside the VBA window it is unaffected by the above code. Note it is unusual to create VBA code to affect the VBA window – I have done it once in about 20 years of VBA coding.

Please note: I reserve the right to delete comments that are offensive or off-topic.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

13 thoughts on “Excel VBA Command to Clear the Clipboard

  1. That was really the solution I was looking for! Every now and then a message requesting me to manage the clipboard pops up while running my macro in excel, and just by adding this command after the “paste” command lines, I can stop worrying about whether the clipboard is full or not!
    Thanks a lot!

  2. This solution doesn’t work in case of pasting we coppied from other sources (for instance notepad).

    • I built on this command, and then did this in my Excel VBA code. When I am “finished” I select any cell in the page in my document, copy it, and set CutCopyMode to False. E.g.:

      Application.CutCopyMode = False

      That should clear out the clipboard entirely.

      • Hi Mark
        You can just use
        Application.CutCopyMode = False
        anywhere in your code to clear the clipboard – doesn’t have to be just after a cop. – sometimes you include it in the exit or error handler to make sure the clipboard is clear when the code finishes.

  3. For some reason whenever i inserted a row using Range.EntireRow.Insert, it was inserting the previously copied cells into every single cell across the entire row. Very frustrating, but this fixed it. Thank you!