Vilas知道他可以保护工作表,以便用户无法删除单元格。但是,他需要在不使用工作表保护的情况下防止单元格的删除。 (Vilas并不是在讲清除单元格内容,而是在实际删除单元格,以便周围的单元格必须向左移动或向上移动。)他想知道是否有一种方法可以防止用户在不保护工作表的情况下删除单元格。

在Excel中没有直接的方法可以做到这一点。如果Excel提供了一种创建事件处理程序的方法,每当删除一个单元格时都会调用它,但事实并非如此,那就很好了。 (显然,每当更改单元格的内容时都会触发Worksheet_Change事件,但是当单元格被完全删除时不会触发。)因此,使用宏保护您的单元格不被删除是不可行的。

我们已经找到的最佳解决方案涉及利用Excel如何处理数组公式的怪癖。为了举例说明,假设您具有A1:L37范围内的数据,并且您不希望删除此范围内的任何单元格。请遵循以下一般步骤:

。选择要保护的块右侧的单元格范围。在这种情况下,选择单元格M1:M37。

。键入=“”,然后按Shift + Ctrl + Enter。现在,您已经创建了一个不做任何事情的数组公式,该公式采用了M1:M37的整个范围。

。选择您要保护的单元格块正下方的单元格范围。在这种情况下,选择单元格A38:L38。

。键入=“”,然后按Shift + Ctrl + Enter。现在,您已创建了一个不做任何事情的数组公式,该公式将使用A38:L38的整个范围。

此时,您不能删除数据块(A1:L37)中的任何单元,也不能删除第1至37行或任何A至L列。每次尝试时,Excel都会显示一条消息,指出“您无法更改数组的一部分”。删除数据块中的单元格,行或列的唯一方法是首先摆脱将受到影响的数组公式。换句话说,您需要先删除M列或38行。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(10256)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以在此处为Excel的较早菜单界面找到此技巧的版本:

链接:/ excel-Stopping_the_Deletion_of_Cells [停止删除单元格]。