アプリケーションとしてのVBA Excel(エクセル) VBA の役立つ Tips の紹介

アプリケーションとしてのVBA

エラー処理

エラー処理


  プログラム実行時、何らかの原因でエラーが発生し、プログラムが途中で止まってしまう
  ことがあります。

  エラーの原因はプログラムミスもありますが、

    ・Excelの表に想定していないデータが入っていた
    ・ユーザーが予期しない操作をした

  などで、エラーが発生する場合があります。

  完全にエラーを無くすのは難しい状況です。

  そこで、プログラム実行中にエラーが発生したば場合、どのような処理を実行するか、
  あらかじめプログラミングしておくことで、エラーで止まってしまう事を回避できます。

  下記にエラー処理のステートメントをまとめました。

ステートメント内容
On Error GoTo ラベル(又は行番号)エラーが発生した場合 ラベル(又は行番号) 以下のステートメントを実行する
On Error Resume Nextエラーを無視して実行
On Error GoTo 0上記のエラー処理を解除する
Resume エラーが発生した行へもどる
Resume Nextエラーが発生した次の行へもどる

  発生したエラーには、エラー番号とエラー内容が割り当てられていて、エラーの要因が
  分かるようになっています。

  エラー番号は Errオブジェクトの Number プロパティで、エラー内容は Description 
  プロパティで知ることができます。
 
  下記にエラー番号とエラー内容の一覧をまとめました。

エラー番号エラー内容エラー番号エラー内容
6オーバーフローした58すでに同名のファイルが存在している
7メモリー不足62ファイルにこれ以上データがない
9インデックスが有効範囲に無い68デバイスが準備されていない
110で除算した71ディスクが準備されていない
13型が一致しない75パスが無効
52ファイル名または番号が不正76パスが見つからない
53ファイルが見つからない424オブジェクトが必要
55ファイルはすでに開かれている482プリンターエラー


  下記のエラー処理ルーチンのサンプルを参考にしてください。

  サンプルは、A列 を B列 で割り算しているだけです。

  エラーが発生する状況を作成して、動作を確認してください。

Sub test()

    Dim i As Integer
    
    On Error GoTo ErrorHandler
    
    For i = 1 To 100
    
        Range("C" & Format(i)) = _
                     Range("A" & Format(i)) / Range("B" & Format(i))
        
    Next
    
   Exit Sub
   
ErrorHandler:

    ' エラー番号を評価します
    Select Case Err.Number
        
        Case 11             '0で除算
            
            Range("C" & Format(i)) = Err.Description
            
        Case 13             '型の不一致
        
            Range("C" & Format(i)) = Err.Description
            
    End Select

    'エラーが発生した次の行へ戻る
    Resume Next
    
End Sub
 




Copy (C) 2005   アプリケーションとしてのVBA   All Rights Reserved.