検索

キーワード


目次

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

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

Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!

フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。

じめ

こんにちは。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

「挑戦心」を忘れずに、新しいことにチャレンジしています。 資格:VBAエキスパート Excel VBA(ベーシック/スタンダード) 等

編集した記事一覧

正社員/フリーランスの方でこのようなお悩みありませんか?

  • 自分に合う案件を定期的に紹介してもらいたい
  • 週2、リモートワークなど自由な働き方をしてみたい
  • 面倒な案件探し・契約周りは任せて仕事に集中したい

そのような方はぜひ、Workteriaサイトをご利用ください!

  • 定期的にご本人に合う高額案件を紹介

  • リモートワークなど自由な働き方ができる案件多数

  • 専属エージェントが契約や請求をトータルサポート

よく読まれている記事