我有一个电子表格,其中(简化的)用户将信息输入到A列,该信息用于B列的公式.B1使用A1中的信息,B2使用A2中的信息等。
工作表处于“受保护”状态,仅允许用户选择和更改A列中未锁定的单元格。它们不应该更改工作表的格式或结构。然而,即使纸张受到保护,它们也能够通过单击单元格框架并将其拖动到另一个单元格上来“移动”单元格内容。
如果他们将A1移动到A2,B1现在使用A2中的信息,B2给出参考错误。
我想运行代码,当用户“移动”一个单元格时,会触发一个宏来撤消移动。
有没有人知道检测单元格以编程方式移动的方法,或者对我的问题有不同的解决方案?除了微软没有用表格保护忽视这个问题:D
答案 0 :(得分:2)
有没有人知道检测单元格以编程方式移动的方法,或者对我的问题有不同的解决方案?除了微软没有用表格保护忽视这个问题:D
我有另一个解决方案。
禁用此工作簿中的拖放功能。棘手的部分是这是一个应用程序级设置,因此您需要根据哪个工作簿处于活动状态来切换为启用/禁用。
这不是 beginner 级别的VBA,但我已在THIS ANSWER中对其进行了记录,并提供了一个包含所有示例代码的XLSM文件的链接。模块。
答案 1 :(得分:0)
意识到这是一篇过时的文章,但是我偶然发现它在寻找相同的内容,因此我分享了另一种方法来解决此问题,后来我想到了。
使用OFFSET函数来引用公式中的单元格,这样您就不必担心拖放移动引用的单元格了。在此示例中,B1引用了A1中的值,因此在B1中使用OFFSET(B1,0,-1)引用A1。