如果单元格更改,清除内容离开公式

Posted

技术标签:

【中文标题】如果单元格更改,清除内容离开公式【英文标题】:Clear contents leave formula if cell change 【发布时间】:2020-04-20 15:29:34 【问题描述】:

更改单元格 B12 的值(下拉菜单)时,单元格 B13 应提及“请选择...”,并且应清除范围 A16:N20 中的所有单元格,但不是公式(每个单元格范围内包含链接到单元格 B12、B13 和其他...的索引/匹配公式。这是当前不起作用的代码...

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Address = "$B$12" Then

        With Application
            .DisplayStatusBar = False
            .ScreenUpdating = False
            .EnableEvents = False
            .Calculation = xlCalculationManual
        End With

    Range("B13").Value = "Please Select..."
    Range("A16:N20").SpecialCells(xlCellTypeConstants, 23).ClearContents

        With Application
            .Calculation = xlCalculationAutomatic
            .EnableEvents = True
            .ScreenUpdating = True
            .DisplayStatusBar = True
        End With
    End If
End Sub

此外,Excel 必须更新所有这些索引/匹配公式非常慢 - vba 中有没有办法让它更快?

【问题讨论】:

【参考方案1】:
Dim r as Range

for each r in Range("A16:N20").Cells
  if WorksheetFunction.isFormula(r) = "" then
    r.clearcontents
  end if
next r

如您所见,您可以使用IsFormula() 工作表函数来解决这个问题。

【讨论】:

没有WorksheetFunction.FormulaText 方法。 WorksheetFunction.IsFormula 可能是你的意思? 糟糕,抱歉。是的。 谢谢,当我在单独的子系统中使用它时,它确实可以正常工作。但是,我想将它集成到现有的子中,以便在单元格 B12 中的下拉列表更改时它可以工作。这可能吗? @Debby:我根据这篇文章“***.com/questions/3875415/…”调整了我的答案。你能检查它是否有效吗?

以上是关于如果单元格更改,清除内容离开公式的主要内容,如果未能解决你的问题,请参考以下文章

如果单元格为空白,则清除 VBA 中另一个单元格代码的内容

事件取决于带有公式的单元格

离开“setEditing”电话后,如何阻止自定义单元格更改样式?

Excel公式更改另一个单元格的值?

UITableView 滚动离开屏幕时清除单元格值

清除下拉菜单后自动清除单元格+修复本地时间