Excel通过VBA清除保护/取消保护工作表上的剪贴板,但在使用UI完成时保留剪贴板,即回顾 - >保护/取消保护?

时间:2018-04-14 08:56:03

标签: excel vba excel-vba

我在Microsoft Excel for Mac 16.11中遇到了一个奇怪的问题。对于Windows版本也同样如此。如果我复制一些单元格并使用VBA来保护或取消保护工作表,则剪贴板会清除。这是我用于保护的代码 - unprotect:

Sheet1.Unprotect( “ABC”)
Sheet1.Protect( “ABC”)

但如果我复制一些细胞并使用UI,即评论 - >保护,取消保护,剪贴板被保留,我甚至可以看到复制的单元格上的点缀绿色边框是完整的,与前一种情况不同。

我可以使用MSForms.DataObject在调用protect / unprotect之前手动保存剪贴板文本(它可以工作),并在调用后恢复它,但是点缀绿色的边框消失,这可能会导致用户混淆。

有没有办法在VBA中模仿用户界面在保护/取消保护时的作用?

1 个答案:

答案 0 :(得分:0)

我在研究其他东西时遇到了一些问题,我认为这可能是对此的答案,请参见http://www.excel-first.com/autoexpand-excel-tables-on-protected-sheets/

简而言之,运行宏/代码似乎是一个普遍的问题,可以使用以下方法阻止Excel通过先打开剪贴板(然后再关闭它)来清除剪贴板:

OpenClipboard 0

~the action that would make Excel clear the clipboard~

CloseClipboard