我有一个电子表格,其中(简化)用户将信息输入到A列,该信息用于B列中的公式.B1使用A1中的信息,B2使用A2中的信息等.
工作表被“保护”以仅允许用户选择和更改A列中的未锁定单元格.它们不应该能够更改工作表的格式或结构.然而,即使纸张受到保护,它们也能够通过单击单元格框架并将其拖动到另一个单元格上来“移动”单元格内容.
如果他们将A1移动到A2,B1现在使用A2中的信息,B2给出参考错误.
我想运行代码,当用户“移动”一个单元格时,会触发一个宏来撤消移动.
有没有人知道一种方法来检测何时以编程方式移动单元格,或者对我的问题有不同的解决方案?除了微软没有用表格保护忽视这个问题:D
最佳答案
Does anyone know of a way to detect when a cell is moved programmatically, or have a different solution to my issue? Other than Microsoft not overlooking this issue with sheet protection 😀
我有另一种解决方案.
禁用此工作簿中的拖放功能.棘手的部分是这是一个应用程序级别设置,因此您需要根据哪个工作簿处于活动状态来切换启用/禁用.
这不是初学者级别的VBA,但我在THIS ANSWER中记录了它,并提供了一个包含所有示例代码和XLSM文件的链接.模块.