我有一个电子表格,用户在A列中输入信息,该信息在B列的公式中使用。B1使用A1中的信息,B2使用A2中的信息,等等。
工作表是“受保护的”,只允许用户选择和更改A列中未锁定的单元格。用户不能更改工作表的格式或结构。然而,即使工作表受到保护,他们也能够通过单击单元格的框架并将其拖到另一个单元格上来“移动”单元格内容。
如果他们将A1迁移到A2上,B1现在正在使用A2中的信息,并且B2会给出一个引用错误。
我希望,当用户“移动”一个单元格时,会触发一个宏来撤消移动。
如何以编程方式检测单元格何时移动或是否有不同的解决方案?
发布于 2014-08-19 15:53:23
有没有人知道通过编程的方式检测单元格移动的方法,或者对我的问题有不同的解决方案?除了Microsoft没有忽略工作表保护的这个问题:D
我有另一个解决方案。
禁用此工作簿中的拖放功能。棘手的部分是,这是一个应用程序级别的设置,因此您需要根据哪个工作簿处于活动状态来启用/禁用它。
这并不完全是初学者级别的VBA,但我已经在THIS ANSWER中对其进行了说明,并提供了一个指向包含所有示例代码和模块的XLSM文件的链接。
发布于 2019-08-12 21:57:06
我意识到这是一个古老的帖子,但我偶然发现它是为了寻找同样的东西,所以我分享了另一种解决这个问题的方法,这是我后来想出来的。
使用OFFSET
函数引用公式中的单元格,这样就不必担心拖放操作会移动引用的单元格。在本例中,B1引用A1中的值,因此在B1中使用OFFSET(B1,0,-1)
引用A1。
https://stackoverflow.com/questions/25387602
复制