• ベストアンサー

ERRORHandler内で処理を分けたい

ERRORHandlerに強制的にとばして、そこで処理を行いたいのですが、何か良い知恵はありませんでしょうか。 たとえば、入力処理でエラーが発生した場合、ERRORHandlerの入力エラー処理でメッセージ&後処理、 出力処理でエラーが発生した場合、ERRORHandlerの出力エラー処理でメッセージ&後処理というように。 よろしくお願いします。 下記はサンプルです。 Sub テキスト入出力() On Error GoTo ERRORHandler '入力処理 <<処理内容>> 入力エラーの場合、ERRORHandlerにとぶ '出力処理 <<処理内容>> 出力エラーの場合、ERRORHandlerにとぶ Exit Sub ERRORHandler: 入力エラー処理 出力エラー処理 End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • TTak
  • ベストアンサー率52% (206/389)
回答No.2

On Err Resume Next をプロシージャ内で宣言して、Err.Numberでエラーナンバーが拾えるエラーなら、それで条件分岐。 独自に設定しているエラーなら、適当な変数を作って、それに値を入れてERRORHandlerに飛ばして条件分岐してはいかがでしょう。 例えば、入力エラーを myErrnumber=1 入力エラーを myErrnumber=2 で、ERRORHandler: 以下では Select Case myErrnumber Case 1 : 入力エラー処理 Case 2 : 出力エラー処理 End Select となります。Err.Numberが拾える場合は Select Case Err.Number で行けるかと思います。

tyurajima
質問者

お礼

出来ました!! ありがとうございます。

その他の回答 (2)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

Err.Raise エラー番号

tyurajima
質問者

お礼

出来ました!! ありがとうございます。

  • akiaki2
  • ベストアンサー率59% (16/27)
回答No.1

入力処理と出力処理を別々のサブプロシジャにしたらどうですか?

tyurajima
質問者

お礼

実際のPGは入力処理、出力処理と相反する処理ではないため、この方法は使えません。 言葉がたりず、すみませんでした。 ありがとうございます。

関連するQ&A

  • ERRORHandlerへの処理の移行

    ERRORHandlerに強制的にとばして、そこで処理を行いたいのですが、何か良い知恵はありませんでしょうか。 たとえば、入力処理でエラーが発生した場合、ERRORHandlerの入力エラー処理でメッセージ&後処理、 出力処理でエラーが発生した場合、ERRORHandlerの出力エラー処理でメッセージ&後処理というように。 よろしくお願いします。 下記はサンプルです。 Sub テキスト入出力() On Error GoTo ERRORHandler '入力処理 <<処理内容>> 入力エラーの場合、ERRORHandlerにとぶ '出力処理 <<処理内容>> 出力エラーの場合、ERRORHandlerにとぶ Exit Sub ERRORHandler: 入力エラー処理 出力エラー処理 End Sub

  • Access(VBA)のエラー処理

    いつもお世話になりますm(__)m Access2003(VBA)のエラー処理について教えて下さい。 いつも、エラー処理は、各private sub毎に記述しています。 例えば private sub A() on error goto ErrShori (処理など) exit sub ErrShori: (エラー処理) end sub private sub B() on error goto ErrShori (処理など) exit sub ErrShori: (エラー処理) end sub 上記のようにしていますが、エラー処理は共通で、どうにか1つの記述(?)で全てのプロシージャに対してエラー処理が出来ればと思っています。 いろいろ調べましたが見あたらず、今は一つ一つのプロシージャに「on error...」と書いています。 MDBファイル単位で「エラーがあるとこれを実行」のような共通のエラー処理を実装する事は出来ないのでしょうか? お詳しい方、是非ご教授下さい。可能であればサンプルを記述頂くと助かります。 宜しくお願い致しますm(__)m

  • VBAのキャンセル処理

    下記のVBAでファイルを出力することはできるようになったのですが、 出力するときに[キャンセル]を押しても"MsgBox :Excelファイルへの出力が完了しました。"が表示されてしまいます。 「キャンセル」した場合は、このメッセージが表示されないようにできないでしょうか? Private Sub Image_Export_Click() On Error GoTo Err_FileDialog_Click 'ファイル出力 Dim strFileName As String Dim ExpFileName As String ExpFileName = "T_master_" & Format(Now(), "yyyymmdd") strFileName = GetFileName(False, "MicrosoftExcel ブック (*.xls)|*.xls", "", ExpFileName & ".xls") If Len(strFileName) = 0 Then 'キャンセルボタンが押されたときの処理を記述 MsgBox "キャンセルが押されました。" Else DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel8, "T_master", strFileName & ".xls", True End If MsgBox "Excelファイルへの出力が完了しました。", , "出力完了" Exit_FileDialog_Click: Exit Sub Err_FileDialog_Click: MsgBox "予期せぬエラーが発生しました" & Chr(13) & _ "エラーナンバー:" & Err.Number & Chr(13) & _ "エラー内容:" & Err.Description, vbOKOnly End Resume Exit_FileDialog_Click End Sub

  • VBA エラーハンドラーについて

    VBAについてお教えください。テキストファイルを開いて、データ処理を行おうと思っています。 下記のような処理をおこなっています。 On Error GoTo ErrorHandler 'ファイル番号を取得 FNo = FreeFile Do While Not EOF(FNo) ~~処理 ~~処理 Loop 'ファイルを閉じる Close #FNo ErrorHandler: ~~処理 end sub ループが無事に終わって、ファイルを閉じるところまで行くのは良いのですが、Close #FNoの後に処理がErrorHandler:に移ってしまいます。 特に問題が無ければ、ErrorHanderを飛び越えてend subに行くと思っていたのですが、認識が違うのでしょうか? それとも何らかのエラーが起こっているのでしょうか?

  • On ErrorでエラーNoが0

    On ErrorでエラーをトラップしてエラーNOとエラー内容をダイアログに表示させています。 Private Sub pv_sample() Dim errno as Long On Error GoTo ERR_END ' 処理内容略 Exit Sub ERR_END: errno = Err.Number MsgBox "システムエラー エラーNO(" & errno & ") 内容(" & Err.Description & ")" End Sub エラーが発生した場合はErr.Numberには0以外がセットされるはずですが 「システムエラー エラーNO(0) 内容()」 というメッセージが表示されることがあります。 On Eroorで飛んできたときにエラーNoが0になってしまうことはありえるのでしょうか。

  • エクセルマクロで、エラー処理時にセルに色をつける方法

    エクセルマクロで、エラー処理時にセルに色をつける方法 エクセルマクロでファイルを移動する処理を行っています。 A1セルには共通のパスがあり、 A2セルには「旧ファイル」というタイトル、B2セルには「新ファイル」というタイトルが入っています。 そして、A3セルから下に向かって移動元のファイルのパス&ファイル名が入力されています。 B3セルから同じく下に向かって移動させたい先のパス&ファイル名が入力されています。 教えていただきたいのは、考えられるエラーが起こったときに 処理を途中で止めずにエラーの出た行(B列の)に色をつけ 次の処理に進む方法です。 考えられるエラーとは 1 旧ファイルが見つからない場合 2 新ファイルが移動先に既にある場合です。 下記のコードでエラー内容を表示させるまではできたのですが 1と2の場合分けをどうしたらいいかわかりません。 1の場合と2の場合の色をわけることができたら最高なのですが… どなたか教えてください。 よろしくお願いします。 Sub test() Dim i As Long On Error GoTo ErrorHandler i = 3 Do Until Cells(i, 1).Value = "" Name Range("A1").Value & Cells(i, 1).Value As Range("A1").Value & Cells(i, 2).Value i = i + 1 Loop Exit Sub ErrorHandler: MsgBox Err.Description End Sub

  • エラーが発生した場合は VBA

    Sub Sample() On Error GoTo Err1 Dim i As Integer i = "あ" '←ココで構文エラーとなる。 MsgBox "あ" Debug.Print "無事終了します" Exit Sub Err1: Debug.Print "エラーになりました" i = 1 Resume Next 'エラーの発生した次の行から処理を続行します。 End Sub このようなエラー処理で エラーが発生した場合は MsgBox "あ" ではなく i = "あ" '←ココで構文エラーとなる。 に戻る事は出来ないのでしょうか?

  • on error 処理に関して

    on error goto での処理ルーチン内で、 さらに on error goto を出すことは可能でしょうか。 それとも、一度on errorを設定すると、エラーが発生した後では変更は不可なのでしょうか。 やりたいことは、 1回目と、2回目、3回目以降でやることとを変えたいのです。 例えば、メッセージを変えるとか。 この場合、 エラー処理の中で、何回目かを聞くことで、メッセージを変えることは出来ると思うのですが、 それはやらず、 他にも色々やることが多いので、別処理として飛びたいのです。 以下のようなイメージです。 err1: on error goto err2 resume next err2: on error goto err3 resume next err3: resume next 宜しくお願いします。

  • VBでのエラー処理(On Error)

    VBで以下のようなプログラムを書いています。 sub On Error goto Err 処理1 Err: 処理2 End sub 処理1でエラーが発生した場合、Err:の処理に入ってくるのですが、もしErr:の中の処理2でもエラーが発生した場合、どうすればよいのでしょうか? Err:の中でもエラー処理ができるのでしょうか、それともロジックで回避しなければならないのでしょうか? ご存知の方がいらっしゃいましたら宜しくお願いします。

  • エクセル/マクロ エラー処理がうまくいきません

    エクセルマクロの質問です。エクセルのヴァージョンは2000です。 シートをコピーして新シートに任意の名前を付けるマクロを作っています。 ユーザーフォームの中に一つのテキストボックス(新シートの名前入力用)と 二つのコマンドボタンを設置し一つは実行ボタン、もう一つはキャンセルボタンとしました。 テキストボックスに不正な名前(空白、記号、すでに存在するシート名)が入力された状態で 実行ボタンを押すと新シートは作成されず、メッセージボックスで実行できない旨が表示され、 入力フォームに戻るという感じにしようと思っています。 エラー処理には下記の通りOn Errorステートメントを試してみました。が、どうもうまくいきません。 エラーが出ても新しいシートが作成されてしまい、その後にメッセージボックスが出てしまいます。 正しいエラー処理の仕方をご教示頂けると幸いです。どうぞよろしくお願いします。 Private Sub CommandButton1_Click() Dim NewSheetName As String NewSheetName = TextBox1.Value On Error GoTo Err1 Sheets("Summary").Select Sheets("Summary").Copy After:=Sheets("Summary") ActiveSheet.Name = NewSheetName Exit Sub Err1: MsgBox "Invalid name"    Exit Sub End Sub

専門家に質問してみよう