検索

キーワード


【Excel VBA】エラーが発生しても無視して処理を中断しない方法

  • 公開日:2021-03-03 17:25:40
  • 最終更新日:2021-02-24 10:47:45

じめ

こんにちは。IMMRです。


プログラム実施時にエラーが発生するとプログラムが一時中断となり、

全てのデータに対して行うことが出来なくなってしまいます。

プログラム内の問題なら作成者側で修正ができるのですが、データ側(特に使用者が入力したもの)の理由では

対策が難しくなってしまいます。

そういった場合はエラーを無視する方法があります。無視することによって、処理を中断しないで済みます。


エラーを無視するのではなく、「エラーが発生した時だけ、別の処理がしたい。」という場合は、下記を参照。

エラーが発生した時だけ、別の処理を行う方法


1.実行中にエラーが発生すると処理が中断してしまう

実行中にエラーが発生すると処理が中断してしまう具体例を説明します。

下記のような、売り上げ一覧があったとします。


図1 売り上げ一覧(数値入力なし)

商品売り上げ一覧(数値記載なし)


上記図のように「標品名」と「価格」が初めから記載されていて、

「個数」と「合計」が記載されていません。


そして、下記図のように店舗ごとの店長が「個数」を入力します。

図2 商品売り上げ一覧(数値入力あり)

売り上げ一覧(数値入力あり)


そして、下記のサンプルコードを使用して各合計を求めます。

Dim i As Long

For i = 4 To 18
    Cells(i, 5) = Cells(i, 3) * Cells(i, 4)
Next i


実行を行うと合計値が入力されます。


図3 商品売り上げ一覧(実行後)

売り上げ一覧(実行後)


上記のように各商品ごとの合計が入力されました。

では、もし個数を入力する箇所に間違えて数値ではなく、アルファベットが入力されていたらどうでしょう。


図4 商品売り上げ一覧(数値以外の入力)

売り上げ一覧(数値以外の入力あり)


先ほどと同じサンプルコードで実行します。

図5 商品売り上げ一覧(実行後のエラー)

売り上げ一覧(実行後のエラー)


当然ですが、エラーしました。

エラーが発生するとプログラムが中断してしまいます。

よって、エラーが発生した場所(10行目)より下の箇所は、数値が入力されているにも関わらず、処理が行われていません。

処理が中断してしまいました。


2.エラーが発生しても無視して処理を中断しない方法

1.の方で説明しましたが、実行中にエラーが発生すると処理が中断してしまいます。

そのため、エラーが発生しても中断しない方法について説明します。処理を中断しない方法については、簡単です。

プログラム内に下記の1行を記載するだけなのです。


エラーを無視する

On Error Resume Next

エラーが発生しても中断しないということです。エラーを無視します。


この1行を先程のサンプルコードに記載したものが下記になります。


サンプルコード

Dim i As Long

On Error Resume Next

For i = 4 To 18
    Cells(i, 5) = Cells(i, 3) * Cells(i, 4)
Next i


3.エラーが発生しても無視して処理を中断しない方法の実行

実際に上記サンプルコードを実行して、エラーが発生しても無視して処理を中断しないかどうか確認します。

もちろん、エラーが発生する図4の時と同じデータを使用します。


図6 商品売り上げ一覧(数値以外の入力だが中断なしで全ての処理を実施)

標品」売り上げ一覧(数値入力ミスだが中断なし)


上記のように10行目でエラーになったのにも関わらず、11行目以降も実施します。

エラーのあった10行目は、ブランクになっています。


エラーが発生しても無視して処理を中断されずに全てのデータで行うことが出来ました。


【著者】

Imamura

今まではExcel VBAの開発をしてきました。
開発を主にしたものや他の業務の効率化を目指して行ったものさまざまです。
現在は、他のプログラミング言語に挑戦して、スキルアップを目指しています。

よく読まれている記事