【VBA入門】GoToでスキップ(ラベル、ループ制御、エラー処理)

GoToステートメントって使ってますか?GoToステートメントは所定の記述まで処理をジャンプさせることができます。

この記事では、GoToステートメントについて

  • GoToとは
  • ラベルへジャンプする方法
  • という基本的な内容から、

  • ループをスキップする方法
  • On Error GoToでエラー処理をする方法
  • など応用的な内容についても解説していきます。

    今回はGoToステートメントについて、使い方をわかりやすく解説します!

    GoToステートメントとは

    GoToステートメントはラベル先へ処理をジャンプさせます。ループ処理内である条件では処理をスキップしたい場合や、エラー処理を行いたい場合などで使われます。

    ラベル先は同じプロシージャ内だけで、他のプロシージャへジャンプさせることはできません

    必要以上にGoToステートメントを多用すると、コードのフローが複雑になり読みにくくなりバグが発生する原因にもなりますので注意しましょう!

    ラベルへジャンプする方法

    GoToステートメントは以下のように記述して使用します。

    この場合GoToステートメントでラベル先の処理2は実行されますが、処理1は実行されません

    それではサンプルコードで確認していきましょう。

    実行結果:
    GoTo01

    このサンプルコードでは、ElseIfステートメントでの記述を1行に省略し、処理の記述はGoToステートメントのラベル先にまとめています。

    ループをスキップする方法

    ループ処理では、ある条件の場合はそれ以降の処理を省略してループ内の先頭の記述にスキップしたい場合があります。

    そんな場合にVBAでは、continue文は使いません。GoToステートメントを使用します。

    サンプルコードで確認しましょう。

    実行結果:
    GoTo02

    このサンプルコードでは、Excelシートのセルに入力されている点数の合計を求めています。

    セルに数値以外の値が入力されている場合は、GoToステートメントを使って合計を算出する処理をスキップして、For文内の最初にあるラベルL1にジャンプしています。

    For Next文でループをスキップする方法については、こちらで詳しく解説していますので、ぜひ参考にしてください。

    On Error GoToでエラー処理をする方法

    On Errorステートメントを使用し処理中にエラーが発生した場合は、GoToステートメントでラベル先のエラー処理へジャンプします。

    サンプルコードで確認していきましょう。

    実行結果:
    GoTo03

    このサンプルプログラムでは、意図して0(ゼロ)で除算するエラーを発生させています。On Errorステートメントを使用し、GoToステートメントによりラベルErrLabelのエラー処理の記述までジャンプしています。

    なおResume Nextステートメントを使うと、エラーの発生によってプログラムが中断することなくエラーが発生した次のステートメントから処理を継続することができます。

    エラーを処理する方法については、こちらで詳しく解説していますので、ぜひ参考にしてください。

    まとめ

    ここでは、GoToステートメントについて説明しました。GoToステートメントはラベル先に処理をジャンプさせることができるので便利ですが、多用するとコードが読みにくくなる原因になります。

    ループで処理をスキップする場合やOn Error GoToでエラー処理を行う場合など、用途を限定して使用することをオススメします。

    使いこなすことができるように、この記事を何度も参考にして下さいね!

    LINEで送る
    Pocket

    最短でエンジニアを目指すなら侍エンジニア塾

    cta_under_bnr

    侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

    あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

    無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

    無料体験レッスンの詳細はこちら

    書いた人

    長野 透

    長野 透

    熊本在住のフリープログラマ兼ライターです。C/C++/C#、Java、Python、HTML/CSS、PHPを使ってプログラミングをしています。専門は画像処理で最近は機械学習、ディープラーニングにはまっています。幅広くやってきた経験を活かしてポイントをわかりやすくお伝えしようと思います。
    お問合せはこちらでも受け付けています。
    [email protected]

    おすすめコンテンツ

    あなたにぴったりなプログラミング学習プランを無料で診断!

    プログラミング学習の効率を劇的に上げる学習メソッドを解説