Excel:VBA 保留来自其他用户的清除内容事件的公式

1 excel vba

问题

\n\n

我在 Excel 文件中为 15 人的团队管理加权决策矩阵。文件中有 10 列包含公式。这些公式根据用户在其他单元格中选择的选项计算总加权分数。

\n\n

有时用户需要删除条目。我的团队的常见删除方法包括选择整行并执行以下操作之一:

\n\n
    \n
  • 按删除键。
  • \n
  • 右键单击并选择“清除内容”。
  • \n
  • 从“主页”选项卡上的“编辑”组中选择“清除内容”。
  • \n
\n\n

所有这些方法还清除了计算加权分数的公式。

\n\n

上面描述的方法对于我的团队中的大多数人来说都很直观,所以我\xe2\x80\x99d希望找到一种方法让人们在不清除公式的情况下使用这些方法。

\n\n

梦想

\n\n

允许用户在使用上述任何方法清除单元格时清除除公式 之外的所有内容。

\n\n

我尝试过的事情

\n\n
    \n
  • 仅锁定公式单元格。这可以防止用户清除公式,但当他们选择整行时,\xe2\x80\x99 无法清除其他单元格中的内容,因为该行中的公式单元格被锁定。

  • \n
  • 下面的宏。该宏将清除常量并保留公式,但当“清除内容”事件发生时,我无法让它自动触发。我担心,期望我的团队的所有成员都运行此宏而不是使用常规方法来清除内容是愚蠢的事情。

    \n\n
    Sub ClearOnlyValues()\n  Dim Cel As Range\n\n  Application.EnableEvents = False\n  Application.Calculation = xlCalculationManual\n\n  For Each Cel In Selection\n    If InStr(Cel.Formula, "=") = 0 And Cel.Value <> "" Then\n     Cel.ClearContents\n  End If\n  Next Cel\n\n  Application.EnableEvents = True\n  Application.Calculation = xlCalculationAutomatic\n\nEnd Sub\n
    Run Code Online (Sandbox Code Playgroud)
  • \n
  • 谷歌。我能找到的唯一宏必须在每次您想要清除内容时手动运行,并且无数帖子演示了清除常量的“转到特殊”方法。请参阅上面的傻瓜的任务。如果他们不能直观地清除细胞,我们就会陷入混乱。猫和狗住在一起。这将是无政府状态。

  • \n
  • 比我聪明得多的高级 Excel 用户。他们都被难住了。

  • \n
\n\n

如果您仍然和我在一起,谢谢您抽出时间。

\n

小智 7

在 Excel VBA 代码中尝试这些常量:

Sheet1.Range("B3:E20").SpecialCells(xlCellTypeConstants).ClearContents
Run Code Online (Sandbox Code Playgroud)

无需保护细胞。这将清除单元格内容而不删除公式。