2017-05-01 6 views
0

ドル値が入力された場合、またはパーセント値が入力された場合、等価ドル値が計算された場合の等価パーセントを計算する以下のスニペットを使用しています。これはうまくいきますが、ユーザーが%と$値の両方を選択して内容を消去した場合(値を0に更新するのではなく)、実行時エラーが発生します。私が決定しようとしているのは、このタイプのエラーを処理する最善の方法です。 $と%の両方の値が選択されていて、内容をクリアしてコードを破らずに0に修正した場合の創造的な考え?ユーザーが内容をクリアした場合のVBAエラー処理

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 

答えて

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 
に値を設定します
関連する問題