我正在使用以下代码片段,如果输入美元值或输入百分比值,则计算等效百分比,并计算等值美元值。这工作正常,但如果用户同时选择%和$值并清除内容(而不是仅将值更新为0),则会导致运行时错误,这将基于代码完全有意义。我想要确定的是处理此类错误的最佳方法。如果选择了$和%值,并且单击了清除内容,它会在不破坏代码的情况下更正为0,那么是否有任何创造性的想法?
If Not Application.Intersect(cell, target) Is Nothing Then
Select Case target.Column
Case 37, 39, 43
target.Offset(, 1).Value = target.Value / Range("V" & target.Row).Value
Case 38, 40, 44
target.Offset(, -1).Value = WorksheetFunction.RoundUp((target.Value * Range("V" & target.Row).Value), -2)
Case 41, 60
target.Offset(, 1).Value = WorksheetFunction.RoundUp((target.Value * Range("V" & target.Row).Value), -2)
Case 42, 61
target.Offset(, -1).Value = target.Value / Range("V" & target.Row).Value
End Select
End If
答案 0 :(得分:1)
使用On Error Resume Next然后检查错误,如果找到则将值设置为0
On Error Resume Next 'jsut keep going if we have an error
If Not Application.Intersect(cell, target) Is Nothing Then
Select Case target.Column
Case 37, 39, 43
target.Offset(, 1).Value = target.Value / Range("V" & target.Row).Value
Case 38, 40, 44
target.Offset(, -1).Value = WorksheetFunction.RoundUp((target.Value * Range("V" & target.Row).Value), -2)
Case 41, 60
target.Offset(, 1).Value = WorksheetFunction.RoundUp((target.Value * Range("V" & target.Row).Value), -2)
Case 42, 61
target.Offset(, -1).Value = target.Value / Range("V" & target.Row).Value
End Select
End If
If Err.Number <> 0 Then 'check for an error
Err.Clear 'clear the error
target.Offset(, -1).Value = 0 'set the value to 0
End If