首页 > 解决方案 > 如何查看单元格的内容何时被清除与“Worksheet_Change”子中的设置为 0?

问题描述

我正在“Worksheet_Change”子中编写代码,我需要在其中存储单元格值的潜在变化(始终为整数)。但是,当一个值被删除时,它在我的工作表中显示为“0”,我需要它根本不显示任何值,因为“0”和“无”在我的文件中以完全不同的方式处理。

那么,我该如何编码,以便我可以区分设置为零的内容和删除的内容之间的区别,以便当我需要删除单元格的值(因此清除其内容)时,它会出现空而不是零?

我相信问题可能出在以下部分:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim oldQty As Integer
Dim newQty As Integer

Application.EnableEvents = False
With Target
    newQty = .Value
    Application.Undo
    oldQty = .Value
    .Value = newQty
End With

Application.EnableEvents = True
    
(...)

End Sub

我需要这个来存储单元格的旧数量。我希望我足够清楚,任何帮助表示赞赏

标签: excelvba

解决方案


将以下行放在Worksheet_Change.

If Target.Cells.Count > 1 Then Exit Sub 'prevent error in case of range edits

并更改以下部分

With Target
    newQty = .Value
    Application.Undo
    oldQty = .Value
    .Value = IIf(newQty = 0, vbNullString, newQty)
      'if value is zero return an epmty string instead of `0`
End With

推荐阅读