Written by Allen Wyatt (last updated March 5, 2022)
This tip applies to Excel 2007, 2010, 2013, 2016, 2019, Excel in Microsoft 365, and 2021
Jerry knows that, in Excel, there are several clipboards available. He wonders, though, if there is a way to clear each of the clipboards in a macro.
There are actually four different clipboards that you can tap into in Excel. The simplest one is the actual Excel clipboard, which is active anytime you see the marching ants around a selected range of cells. This clipboard can be cleared by using this single code line:
Application.CutCopyMode = False
The second clipboard is the Windows clipboard, which can be cleared using the following code, which works in 32-bit Excel environments:
Public Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long Public Declare Function EmptyClipboard Lib "user32" () As Long Public Declare Function CloseClipboard Lib "user32" () As Long Sub ClearClip() OpenClipboard (0&) EmptyClipboard CloseClipboard End Sub
If you are using a 64-bit version of Excel (which means all Excel 2019 and Microsoft 365 versions), then you'll need to use code that is a bit different:
Declare PtrSafe Function OpenClipboard Lib "User32" (ByVal hwnd As LongPtr) As LongPtr Declare PtrSafe Function EmptyClipboard Lib "User32" () As Long Declare PtrSafe Function CloseClipboard Lib "User32" () As Long Sub ClearClip() OpenClipboard (0&) EmptyClipboard CloseClipboard End Sub
The difference between the 32-bit and 64-bit versions is the declaration lines, all of which are outside of the actual ClearClip subroutine.
The third and fourth clipboards are the Windows Clipboard History and the Office Clipboard, which are obviously Windows-level clipboards. Accessing them is more nitty-gritty and advanced than anything discussed so far. Of course, you may not care about clearing these Windows clipboards in Excel. Rather than explain it all here, you may appreciate this discussion at Stack Overflow:
https://stackoverflow.com/questions/64066265/clearing-the-clipboard-in-office-365
Note:
ExcelTips is your source for cost-effective Microsoft Excel training. This tip (12854) applies to Microsoft Excel 2007, 2010, 2013, 2016, 2019, Excel in Microsoft 365, and 2021.
Save Time and Supercharge Excel! Automate virtually any routine task and save yourself hours, days, maybe even weeks. Then, learn how to make Excel do things you thought were simply impossible! Mastering advanced Excel macros has never been easier. Check out Excel 2010 VBA and Macros today!
Copying information using a macro is rather simple, although there are multiple ways you can do the copying. The most ...
Discover MoreOne common type of workbook used in offices is one that contains a single worksheet for each month of the year. If you ...
Discover MoreWith a little bit of work, Excel allows you to format individual characters of the text you place in a cell. If you want ...
Discover MoreFREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."
2022-03-05 11:19:05
J. Woolley
There is often confusion about Declare statements. VBA7 was introduced with Office 2010, the first to offer 32-bit and 64-bit versions. The Declare statements depend on your version of VBA, not your version of Excel (32-bit or 64-bit). If you have 32-bit or 64-bit Excel 2010 or later, use Declare PtrSafe.... In my humble opinion, anyone with an older version should upgrade.
The Tip's ClearClip macro applies to the legacy (single-item) Windows clipboard. There are two expanded (multi-item) clipboard features, each with its own user interface.
Office Clipboard is described here:
https://support.microsoft.com/search/results?query=Office+clipboard
Windows Clipboard History (Win+V, Settings > System > Clipboard) is described here:
https://support.microsoft.com/search/results?query=windows+clipboard+history
My Excel Toolbox includes the following three VBA7 macros:
ClearClipboard, which is like the Tip's ClearClip macro.
ClearOfficeClipboard, see https://stackoverflow.com/a/71326246/10172433
ClearClipboardHistory, see this abbreviated version:
Sub ClearClipboardHistory()
Const W = "wmic service where ""name like 'cbdhsvc[_]%'"" call "
Const C = "/c " & W & "stopservice" & " & " & W & "startservice"
CreateObject("Shell.Application").ShellExecute "cmd.exe", C, , "runas", 0
End Sub
See https://sites.google.com/view/MyExcelToolbox/
Got a version of Excel that uses the ribbon interface (Excel 2007 or later)? This site is for you! If you use an earlier version of Excel, visit our ExcelTips site focusing on the menu interface.
FREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."
Copyright © 2024 Sharon Parq Associates, Inc.
Comments