首页 > 解决方案 > 如果单元格为空,则用公式填充单元格

问题描述

我得到了一个具有公式的单元格:=SE(G15<>"";0;""),这意味着取决于参考单元格不是空白的,它必须在该单元格中返回一个 0 。

问题是,有时我将不得不手动将此单元格更改为另一个数值,删除我输入的旧公式,然后在将来这个单元格将永远不会再次返回 0,以防我再次输入相同的公式.

我想制作一个可以帮助我的 vba 代码。每次我使用手动输入的值删除单元格时,它都会带回带有 0 的公式,并且 this 在 range 中F16:Q16

我试图写的是这样的:

Sub Worksheet_Change(ByVal Target As Range)

target.range为每个单元格定义,但我不知道如何进步了。

请问,有人可以帮忙吗?

标签: excelvba

解决方案


使用工作表更改事件:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range, c As Range
    Set rng = Application.Intersect(Target, Me.Range("F16:Q16")) 'range to be checked
    If Not rng Is Nothing Then
        On Error GoTo haveError
        Application.EnableEvents = False 'stop updates from re-triggering this handler
        For Each c In rng.Cells
            If Not c.HasFormula And Len(c.Value) = 0 Then
                c.Formula = "=IF(G15<>"""",0,"""")" 'use US-style from VBA
                                                    ' or use FormulaLocal
            End If
        Next c
    End If

haveError:
    Application.EnableEvents = True 'make sure events are re-enabled
End Sub

推荐阅读