首页 > 解决方案 > 有没有办法使用工作表保护来允许用户输入值但保护格式?

问题描述

我有一个包含一列数字的工作表。该列使用背景颜色、数字格式等进行格式化。该列已解锁。我通过右键单击选项卡并选择保护来手动保护工作表。在“保护工作表”对话框中,未选中“格式化单元格”。我解释为用户不应该能够格式化单元格。然而,当用户粘贴到列中时,格式与值一起粘贴。

如果我使用 VBA 保护工作表, sh.Protect UserInterfaceOnly:=True 我会得到相同的结果:格式被粘贴。我没有指定 AllowFormattingCells:=False,因为默认值为 False。

我看过一些帖子,建议可以通过从阴影区域复制和粘贴来恢复格式。在我开始保护工作表之前,我已经使用过这个解决方案,但发现它过于复杂。我曾希望这是保护可以处理的事情。如果有办法处理它,我想在 VBA 中完成。

标签: excelvbaformatlockingprotection

解决方案


没有可用于实现所需结果的内置保护选项。

在这种情况下唯一有效的是您提到的笨拙的解决方法,即使用 Worksheet_Change 事件来确保在修改单元格后格式正确。

由于粘贴内容的方式有很多种,例如通过各种菜单、功能区命令、键盘快捷键等,任何试图拦截粘贴的 VBA 解决方案都将变得非常复杂,比将格式恢复到其格式的更改事件复杂得多。原始状态。

另一种选择可能是用户教育和培训(因此他们只知道粘贴值),尽管用户行为可能是整个场景中最难改变的元素。


推荐阅读