【发布时间】:2020-07-06 15:27:58
【问题描述】:
我已经阅读了各种关于使用 VBA 防止由于用户粘贴数据而导致电子表格格式更改的帖子。
我不喜欢将 CTRL+V 绑定到宏的方法,因为用户可能不使用快捷方式,而且有些示例具有粘贴到随后单击的任何单元格的效果。
我在https://www.mrexcel.com/board/threads/vba-for-pastespecial-values-only.355553/ 中使用撤消功能的代码取得了最大的成功。这适用于工作簿中的复制和粘贴(虽然有点慢),也适用于单个或多个单元格,但不适用于 Excel 的其他实例或其他程序。
我发现 Excel vba paste special method fails whenever i try to paste 可以将粘贴到单个单元格中。
有没有办法将两者结合起来,达到防止从任何来源粘贴更改单元格格式的目的?
【问题讨论】:
-
我的方法是让代码重置/更新由任何类型的单元格更改触发的格式、验证等。有时,有一些隐藏的模板范围是最快的,您只需将特殊格式复制并粘贴到用户刚刚粘贴到的范围中。
-
有趣,完全不同的方法。我喜欢。你有一些示例代码吗?您是否将宏限制为仅在更改某些单元格时才运行?我可以将隐藏的模板单元格锁定,将它们的格式复制到粘贴的单元格中,然后将粘贴区域的样式再次更改为解锁样式。
-
非常感谢任何来自这种方法的示例。
-
您将不可避免地不得不更改任何代码并使其适应您的应用程序。一个好的开始是写下(在一张纸上)您要为所有不同范围保留的格式列表 -> 启动宏记录器并逐个应用这些格式。然后,您可以使用生成的代码使其更具动态性,并删除所有那些
Select语句。一旦您对您的代码感到满意,您就可以在Worksheet_Change事件处理程序中运行它。如果您在此过程中遇到问题,请返回您生成/改编的代码,人们会尽力提供帮助
标签: excel vba copy-paste paste