Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


50690 / 76732 ←次へ | 前へ→

【30927】Re:エラー回避について
発言  ichinose  - 05/11/7(月) 12:33 -

引用なし
パスワード
   ▼sama さん:
こんにちは。
>>例えば、
>>ax−b=0
>>という方程式をxで解くプログラムを考えましょう!!
>
>>でも、これだとaに0が入力されるとエラーになりますよね?
>
>この部分ですが、数学上aに0が入力されると=−bとなり=0とはなりませんが
>このたびは必要性からaに0を入力しても=0と偽った答えを表示させなければ
>なりません。
ということは、エラーになった時の判断方法がわからないと言うことですか?

>>ax−b=0

本来は、先にa,bの値をチェックする(0か否か)のですが、
今回は、先にOn Error ステートメントでエラーを検出してからそれぞれの処理を
行いました。
'========================================================
Sub ax_b_equal_0()
  On Error Resume Next
  Dim a As Variant
  Dim b As Variant
  Dim ans As Variant
  Dim retcode As Long
  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
    ans = b / a
    '↑エラーが発生しそうなステートメント
    retcode = Err.Number 'エラーが発生していればErr.Numnerは、0でない
    Select Case retcode
     Case 0 'エラーなし
       If Fix(b / a) = b / a Then '答えが整数?
        ans = b / a
       Else
        ans = Application.Text(b / a, "???/???")
        End If
     Case 11 '0で割り算したエラー
       ans = 0
       retcode = 0
     Case 6 'オーバーフロー エラー
       If a = 0 And b = 0 Then 'すべての数が解?
        ans = "不定"
        retcode = 0
       Else 'a=1E-300 b=1E+300 なんて入力するとこのエラー
        MsgBox Error(retcode)
        End If
     Case Else 'その他のエラー(あり得ないエラー)
       MsgBox Error(retcode)
     End Select
    If retcode = 0 Then '解がある場合のみ
     MsgBox a & "x-" & b & "=0 : x = " & ans
     End If
    End If
End Sub

確認してみてください。

尚、これでも納得いかない場合は
投稿は夜になってしまいます。
又は、どなたかお願いします。

2 hits

【30791】エラー回避について sama 05/11/4(金) 20:10 質問
【30792】Re:エラー回避について かみちゃん 05/11/4(金) 20:15 発言
【30850】Re:エラー回避について sama 05/11/5(土) 23:17 質問
【30874】Re:エラー回避について かみちゃん 05/11/6(日) 14:08 発言
【30884】Re:エラー回避について Hirofumi 05/11/6(日) 16:31 発言
【30887】Re:エラー回避について Hirofumi 05/11/6(日) 18:29 発言
【30908】Re:エラー回避について sama 05/11/6(日) 23:49 回答
【30912】Re:エラー回避について ichinose 05/11/7(月) 8:19 発言
【30915】Re:エラー回避について sama 05/11/7(月) 9:08 回答
【30927】Re:エラー回避について ichinose 05/11/7(月) 12:33 発言
【30935】Re:エラー回避について sama 05/11/7(月) 14:43 お礼
【30885】Re:エラー回避について ichinose 05/11/6(日) 16:56 発言

50690 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free