excel - 有没有办法使用工作表保护来允许用户输入值但保护格式?
问题描述
我有一个包含一列数字的工作表。该列使用背景颜色、数字格式等进行格式化。该列已解锁。我通过右键单击选项卡并选择保护来手动保护工作表。在“保护工作表”对话框中,未选中“格式化单元格”。我解释为用户不应该能够格式化单元格。然而,当用户粘贴到列中时,格式与值一起粘贴。
如果我使用 VBA 保护工作表,
sh.Protect UserInterfaceOnly:=True
我会得到相同的结果:格式被粘贴。我没有指定 AllowFormattingCells:=False,因为默认值为 False。
我看过一些帖子,建议可以通过从阴影区域复制和粘贴来恢复格式。在我开始保护工作表之前,我已经使用过这个解决方案,但发现它过于复杂。我曾希望这是保护可以处理的事情。如果有办法处理它,我想在 VBA 中完成。
解决方案
没有可用于实现所需结果的内置保护选项。
在这种情况下唯一有效的是您提到的笨拙的解决方法,即使用 Worksheet_Change 事件来确保在修改单元格后格式正确。
由于粘贴内容的方式有很多种,例如通过各种菜单、功能区命令、键盘快捷键等,任何试图拦截粘贴的 VBA 解决方案都将变得非常复杂,比将格式恢复到其格式的更改事件复杂得多。原始状态。
另一种选择可能是用户教育和培训(因此他们只知道粘贴值),尽管用户行为可能是整个场景中最难改变的元素。
推荐阅读
- visual-studio-code - 更新 VSCOD 加载工作区文件夹时出错
- javascript - Rxjs 嵌套观察者未执行
- java - 我的 Spring Security 安全配置类收到 bean 创建错误
- google-kubernetes-engine - 如何为我的 gcloud vpn 授予对 gke 服务的访问权限
- python - 从某些 csv 文件列中写入 Pandas 系列
- php - 如何检查用户是否具有一对一关系的角色?
- arrays - 使用 for 循环从数组中添加整数
- amazon-web-services - SCP 阻止用户更改 s3:PutBucketPublicAccessBlock" 仅当当前已检查该设置时
- python - Matplot图表在熊猫数据帧的for循环中累积叠加
- javascript - GoogleSheets 脚本在表单提交时发送电子邮件,我应该如何处理空白单元格的格式错误?