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%保持locking。我认为bc“.Value / 100”是我的代码所说的必须进入单元格内的0%。 上面的代码是假设将任何数字转换成百分比,但我想我写了它,当它假设为空时,它显示“0%”,但我希望它是空白的。

试试下面的代码:

 Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("G9:G28")) Is Nothing Then If Target.Count <= 1 Then ' make sure not more than 1 cell is changed Application.EnableEvents = False With Target If IsNumeric(.Value) Then If .Value = 0 Then .Value = "" Else .Value = .Value / 100 End If End If End With Application.EnableEvents = True End If End If End Sub 

我会使用一个循环:

 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 

此代码将允许更改一个以上的单元格。

目标可以是几个单元格。 而一个数组除以100是没有意义的。

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

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