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

时间:2014-08-19 15:41:10

标签: excel vba excel-vba

我有一个电子表格,其中(简化的)用户将信息输入到A列,该信息用于B列的公式.B1使用A1中的信息,B2使用A2中的信息等。

工作表处于“受保护”状态,仅允许用户选择和更改A列中未锁定的单元格。它们不应该更改工作表的格式或结构。然而,即使纸张受到保护,它们也能够通过单击单元格框架并将其拖动到另一个单元格上来“移动”单元格内容。

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

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

有没有人知道检测单元格以编程方式移动的方法,或者对我的问题有不同的解决方案?除了微软没有用表格保护忽视这个问题:D

2 个答案:

答案 0 :(得分:2)

  

有没有人知道检测单元格以编程方式移动的方法,或者对我的问题有不同的解决方案?除了微软没有用表格保护忽视这个问题:D

我有另一个解决方案。

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

这不是 beginner 级别的VBA,但我已在THIS ANSWER中对其进行了记录,并提供了一个包含所有示例代码的XLSM文件的链接。模块。

答案 1 :(得分:0)

意识到这是一篇过时的文章,但是我偶然发现它在寻找相同的内容,因此我分享了另一种方法来解决此问题,后来我想到了。

使用OFFSET函数来引用公式中的单元格,这样您就不必担心拖放移动引用的单元格了。在此示例中,B1引用了A1中的值,因此在B1中使用OFFSET(B1,0,-1)引用A1。