. VBAでエラー回避 | ExcelのVBA入門
VBAでエラー回避 | ExcelのVBA入門
VBAでエラー回避 | ExcelのVBA入門

エクセルVBAでプログラムのエラーを回避する

sampleプロシージャのSubステートメントに引数は設定されていません。最初にDimステートメントで 変数i に整数型(Integer)を宣言しています。 次に On Errorステートメント の行ラベルに「 errorhndler 」を設定しています。これによりエラーが発生した場合は、後に記述してある「 errorhndler: 」に移動しそれ以降の処理を実行します。 On Errorステートメント 以降の処理では 変数i 」に文字列の「 VBA 」が格納されていますが、 変数i には整数しか格納できませんので、この時点でエラーが発生します。エラーが発生すると「 errorhndler: 」に移動しますので、「 MsgBox "変数の値が間違っています。" 」が処理されます。最後はEndステートメントを利用してsampleプロシージャを終了させます。

次に 変数i に整数値を設定した場合は、以下のように正常な処理の「 MsgBox "変数iは" & i & "です。" 」が処理されますが、更にそれ以降の「 MsgBox "変数の値が間違っています。" 」も処理されてしまいます。 On Errorステートメント はあくまでエラーが発生した場合に指定した位置へ移動するだけですので、それ以降の処理は正常な処理でも実行されてしまいます。

Sub sample() Dim i As Integer On Error GoTo errorhndler i = 5 MsgBox "変数iは" & i & "です。" errorhndler: MsgBox "変数の値が間違っています。" End Sub

正常な処理とエラー処理を明確に分けたい場合は、正常な処理の最後にExitステートメントを利用して処理を終了させるようにしましょう。以下の事例を確認すると MsgBox "変数iは" & i & "です。" 」の後に「 Exit Sub 」により処理が終了します。

Sub sample() Dim i As Integer On Error GoTo errorhndler i = 5 MsgBox "変数iは" & i & "です。" Exit Sub errorhndler: MsgBox "変数の値が間違っています。" End Sub

エラー処理ルーチンは通常、プロシージャの最後に記述され On Errorステートメント でエラー処理ルーチンに移動しますが、エラーが発生せずに正常に処理が実行されてもエラー処理ルーチンは実行されます。それを回避するために、エラー処理ルーチンの前にプロシージャを終了させる Exit Subステートメント を記述する必要があります。

エラー時にエラー内容を表示させるサンプルコード Sub sample() Dim i As Integer On Error GoTo errorhndler i = "VBA" MsgBox "変数iは" & i & "です。" errorhndler: MsgBox "エラー内容:" & Err.Description End Sub 実行結果 解説

こちらは、先ほどと同じ内容で 変数i が整数型(Integer)に対して文字列を格納しようとしたため、エラー処理が実行されます。その際に MsgBox関数 にErrorオブジェクトのDescriptionプロパティを設定しています。こちらを設定することで エラーに関連する説明の文字列 を表示させます。

今回は、変数に型の違うデータを格納したエラーですので、「 型が一致しません。 」の文字列が返されます。

まとめ

今回は On Errorステートメント を利用して、プログラムのエラーを回避する方法について解説しました。次回は、エクセルVBAでプログラムのエラーを無視する方法について解説します。

エクセルVBAのエラー処理一覧
  • プログラムのエラーを回避する
  • プログラムのエラーを無視する
  • プログラムのエラー処理を無効にする

近田 伸矢, 植木 悠二, 上田 寛

よく読まれているVBAのIE(InternetExplorer)操作関連記事
  • 指定したURLをIE(InternetExplorer)で起動する
  • InternetExplorer制御の準備(ライブラリ追加)
  • HTMLドキュメント(全ての要素)を取得する
  • HTMLDocumentのallオブジェクト
  • webページのBasic認証自動ログイン「ieBasic」
ExcelのVBA入門 オブジェクトの構造 プログラムの基本 エクセルVBAのプログラム制御構文 エクセルVBAのデバッグについて エクセルVBAの基本操作 エクセルVBAのステートメント エクセルVBAのオブジェクト エクセルVBAのプロパティ エクセルVBAのメソッド エクセルVBAのイベント ExcelのVBA関数 Excelのワークシート関数 エクセルVBAでIE制御の応用編

エクセルVBAのIE(InternetExplorer)制御サイトについて

Excelマクロ/VBA(Visual Basic for Applications)を利用したIE(InternetExplorer)の制御についてまとめています。ExcelのVBAでIE(InternetExplorer)を操作することで自動ログインや自動データ入手などができますので、非常に便利なプログラムです。

Copyright(C)2014 エクセルVBAのIE(InternetExplorer)制御 All Rights Reserved.

📎📎📎📎📎📎📎📎📎📎