VBA代码。试图修复" IF"部分

时间:2017-02-23 17:27:21

标签: excel vba excel-vba

所以我在VBA中写了这个:

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("G9:G28")) Is Nothing Then
    Application.EnableEvents = False
    With Target
        If IsNumeric(.Value) Then .Value = .Value / 100
    End With
    Application.EnableEvents = True
End If

End Sub

当我尝试删除" G" 0%的单元格保持锁定。我认为bc" .Value / 100"是我的代码说必须进入该单元格的0%。上面的代码假设将任何数字转换为百分比,但我想我写了它,当它假设为空白时,它显示一个" 0%"但我希望它是空白的。

3 个答案:

答案 0 :(得分:2)

我会使用循环:

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

    If Not Intersect(Target, Range("G9:G28")) Is Nothing Then
        Application.EnableEvents = False
            For Each r In Intersect(Target, Range("G9:G28"))
                If IsNumeric(r.Value) Then r.Value = r.Value / 100
            Next r
        Application.EnableEvents = True
    End If

End Sub

此代码允许更改多个单元格。

答案 1 :(得分:0)

目标可以是几个细胞。 数组除以100毫无意义。

答案 2 :(得分:0)

在执行转换为百分比之前,只需测试相关单元格是否为空IsEmpty(Target.Value),如下所示:

If Not IsEmpty(.Value) And IsNumeric(.Value) Then .Value = .Value / 100