|
▼sama さん:
おはようございます。
>実行時エラーの件ですが、かみちゃんさんのアドバイスにありました、On Error
>ステートメントについて自分なりに調べてみました、結果”On Error Resume Next”をコードに挟んでみましたらエラーはでなくなりました。根本的な解決には
>なっておりませんが。
>この方法では何か問題が発生するのでしょうか?
問題があるか否かは、アルゴリズムによります。
コードと仕様を見なくては判断できません。
大抵は、エラーが発生した場合と発生しなった場合とで処理方法を
分けるのが一般的だと思います。
特殊な場合もありますが・・・。
例えば、
ax−b=0
という方程式をxで解くプログラムを考えましょう!!
'=================================================
Sub ax_b_equal_0()
Dim a As Variant
Dim b As Variant
a = Application.InputBox("ax−b=0のaを入力して", , , , , , , 1)
b = Application.InputBox("ax−b=0のbを入力して", , , , , , , 1)
If TypeName(a) <> "Boolean" And TypeName(b) <> "Boolean" Then
MsgBox a & "x-" & b & "=0 : x = " & b / a
End If
End Sub
でも、これだとaに0が入力されるとエラーになりますよね?
よって、エラーを回避するための
'================================================================
Sub ax_b_equal_0()
on error resume next
Dim a As Variant
Dim b As Variant
a = Application.InputBox("ax−b=0のaを入力して", , , , , , , 1)
b = Application.InputBox("ax−b=0のbを入力して", , , , , , , 1)
If TypeName(a) <> "Boolean" And TypeName(b) <> "Boolean" Then
MsgBox a & "x-" & b & "=0 : x = " & b / a
End If
End Sub
としました。
>結果”On Error Resume Next”をコードに挟んでみましたらエラーはでなくなりました。
>根本的な解決にはなっておりませんが。
>この方法では何か問題が発生するのでしょうか?
sama さんのご質問を上記のコードで考えてみてください。
問題ありませんか?
|
|