【Excel VBA】If Elseとは違う条件式(Select Case)について
エンジニアのIMMRです。Excel VBAの条件式には、以前に説明したExcel VBA 条件式(If Else)とこれから説明するSelect Caseの二つあります。1.従来のIf Else条件式If Elseは条件に合った時は処理Aを、条件に合わなかったら処理Bを実行します。では、下記のようなデータがあり、複数の条件があるとします。If Elseを使用して作成すると2種類の方法が浮かぶと思
Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!
フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。
こんにちは。IMMRです。
プログラム実施時にエラーが発生するとプログラムが一時中断となり、
全てのデータに対して行うことが出来なくなってしまいます。
プログラム内の問題なら作成者側で修正ができるのですが、データ側(特に使用者が入力したもの)の理由では
対策が難しくなってしまいます。
そういった場合はエラーを無視する方法があります。無視することによって、処理を中断しないで済みます。
エラーを無視するのではなく、「エラーが発生した時だけ、別の処理がしたい。」という場合は、下記を参照。
実行中にエラーが発生すると処理が中断してしまう具体例を説明します。
下記のような、売り上げ一覧があったとします。
図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行目)より下の箇所は、数値が入力されているにも関わらず、処理が行われていません。
処理が中断してしまいました。
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
実際に上記サンプルコードを実行して、エラーが発生しても無視して処理を中断しないかどうか確認します。
もちろん、エラーが発生する図4の時と同じデータを使用します。
図6 商品売り上げ一覧(数値以外の入力だが中断なしで全ての処理を実施)
上記のように10行目でエラーになったのにも関わらず、11行目以降も実施します。
エラーのあった10行目は、ブランクになっています。
エラーが発生しても無視して処理を中断されずに全てのデータで行うことが出来ました。
そのような方はぜひ、Workteriaサイトをご利用ください!
定期的にご本人に合う高額案件を紹介
リモートワークなど自由な働き方ができる案件多数
専属エージェントが契約や請求をトータルサポート