如何禁用单元格拖放在Excel中的特定工作簿

我有一个电子表格,其中(简化的)用户在列A中input信息,并且在列B中的公式中使用该信息.B1使用A1中的信息,B2使用A2中的信息等

该表是“保护”,只允许用户select和更改列A中的未locking的单元格。他们不应该能够更改工作表的格式或结构。 但是,即使在工作表受到保护的情况下,也可以通过单击单元格框架并将其拖动到另一个单元格上来“移动”单元格内容。

如果他们将A1移动到A2上,则B1正在使用A2中的信息,并且B2给出参考错误。

我想运行代码,当用户“移动”一个单元格时,会触发一个macros来撤消移动。

有没有人知道一种方式来检测单元格是以编程方式移动,还是有不同的解决scheme来解决我的问题? 除微软之外,没有忽略这个表单保护问题:D

有没有人知道一种方式来检测单元格是以编程方式移动,还是有不同的解决scheme来解决我的问题? 除微软之外,没有忽略这个表单保护问题:D

我有另一个解决scheme。

禁用此工作簿中的拖放function。 棘手的部分是,这是一个应用程序级别的设置,所以您需要根据哪个工作簿处于活动状态将其切换为启用/禁用。

这不完全是初学者级别的VBA,但我已经在本答案中logging了它,并提供了一个包含所有示例代码和模块的XLSM文件的链接。