ExcelWork.info

Excel(エクセル)のマクロ・VBA・関数・操作などのメモ

エラー処理(On Error ステートメント / Errオブジェクト)

   

On Error ステートメントの使い方


【構文 1】

On Error GoTo line
  statements(通常の処理)

line:
  err_statements(エラー発生時の処理)


【構文 2】

On Error Resume Next


【構文 3】

On Error GoTo 0

【各構文の説明】

  • 構文 1  ・・・  On Error GoTo line の後のコード(statements)の中ででエラーが発生した場合、コードを実行する位置が、指定した行ラベル(line:の位置へと移ります(err_statements を実行)。
  • 構文 2  ・・・  実行時エラーが発生してもプログラムを中断せず、エラーが発生したステートメントの次のステートメントから実行を継続します。
  • 構文 3  ・・・  現在のプロシージャに含まれる使用可能なエラー処理ルーチンを無効にします。


On Error ステートメント使用例

On Error GoTo ステートメント

Err.Number、Err.Description は、Err オブジェクトを参照

ここでは、ワークシートは、Sheet1,Sheet2,Sheet3 の3つのシートが存在。Worksheets(4) をアクティブにしようとするとエラーが発生します。


On Error GoTo ステートメント実行結果

On Error ステートメント(例)その1


On Error Resume Next ステートメント

ここでは、ワークシートは、Sheet1,Sheet2,Sheet3 の3つのシートが存在。ワークシートを番号で指定する場合(Worksheetsコレクション)は、一番左側のシートから順に、1、2、3・・・と数えます。上記例で、Worksheets(0) は存在しないのでエラーが発生しますが、On Error Resume Next ステートメント では、エラーが発生しても中断せず、その次のステートメントから実行を継続します。


On Error Resume Next ステートメント実行結果

On Error ステートメント(例)その2


On Error GoTo 0 ステートメント

ここでは、ワークシートは、Sheet1,Sheet2,Sheet3 の3つのシートが存在。存在していない Sheet10 をアクティブにしようとするとエラーが発生します。


On Error GoTo 0 ステートメント実行結果

On Error ステートメント(例)その3



Err オブジェクト


【書式】

<プロパティ>
result = Err.Property

<メソッド>
Err.Method


実行時エラーが発生すると、そのエラーを識別するための情報など、エラー処理で利用可能な情報が、Err オブジェクトに格納されます。

【Err オブジェクトのプロパティ・メソッド一覧】

プロパティ(Property) 内 容 戻値型(result)
Number エラーの種類を表すエラー番号 Long 型
Description エラー内容 String 型
HelpFile ヘルプファイル String 型
HelpContext ヘルプファイルのトピックに対応するコンテキスト番号 Long 型
LastDLLError 最後にダイナミックリンクライブラリ(DLL)を呼び出したときのエラーコード Long 型
Source エラーの発生元のオブジェクトまたはアプリケーションの名前を示す文字列式 String 型
メソッド(Method) 内 容 戻値型(result)
Clear エラー情報をクリア
Raise 実行時エラーを生成

Err オブジェクトの各プロパティは、エラー処理ルーチン内の Exit Sub、Exit Function、Exit Property、Resume Next ステートメントの後で、0 または長さ 0 の文字列 (“”) に自動的にリセットされます。

明示的にリセットしたい場合は、Clear メソッドを使います。



 - 構文 , , , ,

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

  関連記事

for each next ステートメント例
繰り返し処理(For Each…Next ステートメント)

For Each…Next ステートメントの使い方 【構文】 For …

setステートメント使用例 1
set ステートメントを使う

Set ステートメントを使う 【構文 1】 Dim objectvar [ As …

配列が引数のプロシージャ 例1
配列が引数のプロシージャを作成する

配列が引数のプロシージャを作成する 【構文】 { Sub | Function …

プロシージャ作成 例
プロシージャを作成する( Sub, Function )

プロシージャを作成する プロシージャとは、実行時に 1 つの単位として処理される …

GoSub ステートメント
プロシージャ内のサブルーチンへ移動(GoSub…Return ステートメント)

GoSub…Return ステートメント GoSub ステートメント …

for_next ステートメント例
繰り返し処理(For…Next ステートメント)

For…Next ステートメントの使い方 【構文】 For coun …

引数の参照渡し・値渡し( ByRef, ByVal )

引数の「参照渡し」と「値渡し」 「参照渡し」とはプロシージャに引数として変数を渡 …

条件分岐(Select Case ステートメント)

Select Case ステートメントの使い方 【構文】 Select Case …

プロシージャを呼び出す(Call ステートメント)

プロシージャを呼び出す プロシージャ内から、別のプロシージャを呼び出すには、Ca …

With ステートメントを使う

With ステートメントを使う With ステートメントを使うことで、1度指定し …