1ヶ月でWebデザイン・プログラミングスキルをオーダーメイドのカリキュラムで学べるスクール、それがWebCamp。

【VBA入門】go toでfor文の動きの制御の仕方

【VBA入門】
Pocket

For文の動きを制御する方法についてご説明します。
For文は設定した変数が初期値の状態からToで設定した値になるまで同じ処理を繰り返し実行しますが、
状況によっては処理を実行せずにループ処理を続行してほしい場合もあります。
そんな時はgotoでFor文の動きを制御することができます。

Gotoの構文

<解説>
まずは処理を移動したい箇所にラベルを作成します。
ラベルは任意の文字列の後ろにコロン(:)を記述するだけで設定できます。
そしてコード内の任意の個所に「goto ラベル名」と記述するとそこからラベルへ処理が移動します。

上の例では処理Aが実行された後にgotoでラベルへ戻るので
処理Aが繰り返し実行され、処理Bが実行されない状態になります。
また、ラベルの場所はgotoより前でも後でも自由に設定可能です。

Forとgotoを組み合わせたループ処理の制御

<コード>

<実行例>

例では金額に数値が入っていない場合は処理がFor文の先頭のラベルGoukeiStopに戻っていますが、
ループ処理はC8セルまで継続して行われています。またgoto文でラベルへ移動する前にカウンタiを加算しないと
無限ループになってしまうので注意してください。

ラベルをfor文の最後に設定したパターン

<コード>

<実行例>

    
こちらはgotoの後にラベルを設定したパターンです。
単価が入力されたC列のセルを順番にチェックし、数値が入力されている場合のみD列に税込み金額を入力しています。
またラベルZeikomiInputNextへ移動後はNextでカウンタiが加算されているため、カウンタを加算するコードは記述不要です。

goto使用時の注意点

gotoはラベルを設定すればコード内の任意の個所へ処理を移動させることができ、自由度が高い反面
コードの流れが分かりにくくなってしまうという危険性があります。
先の例ではgotoを使わずにif文で同じ動作をするコードを記述することも可能です。
むやみにgotoやラベルを多用することは避け、コード全体の構成が分かりやすくなるようにしましょう。

おわりに

For文のループ処理はgotoとラベルを使用することにより制御することができます。
単純な繰り返し処理だけでは実現できなかった機能を組み込むことが可能となるので
より柔軟にコードを設計することができるようになりますね。

投稿者:プロスタ編集部

  • このエントリーをはてなブックマークに追加

おすすめスクール

全国30校舎で展開されるヒューマンアカデミーのWeb講座は修了者数4万人超、講師とカリキュラムの満足度がどちらも9割を超えています。就職や転職に必要なレベルの実務スキルを身に付けられます。

WebCampは、一ヶ月の短期集中でWebデザイン、プログラミングスキルを習得するスクールです。学習効果の高い反転授業(自主学習でインプット、講義でアウトプット)を採用し、年間1000名を輩出しています。

この記事が気に入ったら
いいね!しよう

プロスタの最新情報をお届けします

あわせて読みたい

関連記事

イチ押しランキング

1リナックスアカデミー

リナックスアカデミー

2システムアーキテクチュアナレッジ

システムアーキテクチュアナレッジ

3WEB塾

WEB塾

メールマガジン

ページ上部へ戻る