将val target更改为范围以忽略空白和0值单元格

时间:2013-06-18 19:45:48

标签: excel vba target ignore byval

Private Sub Worksheet_Change(ByVal Target As Range)

Dim c As Range

For Each c In Target.Cells
   **If c.Value <> Empty Or c.Value = 0 Then
   End If**
   If c.Column = 11 Then
   c.Offset(0, -1).Value = Now()

 End If
 Next c

End Sub

我上面的代码运行良好,除了我试图添加粗体代码以忽略任何空白单元格(也可以选择忽略0值单元格,但不是必需的)。

由于

2 个答案:

答案 0 :(得分:0)

If c.Value != ""

应适用于空白单元格。

至少它有效here

至于忽略值0,你不能只将if子句改为if c.Value > 0吗?

答案 1 :(得分:0)

您似乎以不同的方式进行了两个论点,因为您将<> Empty=0放在同一个测试中。

无论如何,如果除了0之外的单元格中存在某些内容,则会进行更改,如果为空,则清除更改。或者

Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range

Application.EnableEvents = False
For Each c In Target.Cells
    If c.Column = 11 Then
        If c.Value = "" Or c.Value = 0 Then
            c.Offset(0, -1).ClearContents
        Else
            c.Offset(0, -1).Value = Now()
        End If
    End If
Next c
Application.EnableEvents = True
End Sub