VBAと日々のこぼれ話

  1. VBA

【VBA】疑似的なContinue処理

ループの次の反復処理へ進みたい

VBAにはループ文(For文やWhile文等)でよくお目にかかるContinueが何故か存在しないため自力で実装する必要があります。

疑似Continue処理としては、

1.Goto文でラベルに飛ばす
2.If文で処理を回避

疑似Continue処理

サンプルコードは、変数が偶数(2で割り切れる)場合は、メッセージを表示。
そうでなければ、次の反復処理に移る(ここがContinue)

GoTo文でラベルに飛ばす Ver.

If文で処理を回避 Ver.

【スポンサーリンク】



GoTo文とIf文のどちらが良いのか

明確にこちら!と言い切れないのは、私が主流派だと思われるGoTo文(ラベル利用)ではないからです。
GoTo文(ラベル利用)がより好まれているのは、

他言語を知っていることによる馴染みやすさ
ネスト(入れ子)構造の回避

この辺りでしょうか。

サンプルコードでは、すっきりと見えることからIF文で一択のように見えますが実際はFor文の中のIF文の中のIF文・・・というようにネスト(入れ子)で分かりにくくなることも多いです。

私がどちらか選ぶとすれば、良し悪しは別としてIf文で回避派です。
理由は、

Goto文に馴染みが薄い(上手に使えない)
ラベルにはインデントが利かないことが階層が深いより見づらい

コーディングのしやすさは大事ですが、保守性を考えるとGoTo文が良いという記事も見かけますので難しいところです。

小話:Goto文へ馴染みが薄い理由

社畜の頃の話です。

(私の永遠の恋人である)COBOLと出会いと同時に、プロジェクトのコーディング規約で「Goto文の禁止」が大々的に発せられていました。
『推奨しない』ではなく、『禁止』というパワーワード。
目にすることや知識として知っていても使うことはありませんでした。
また他言語のプロジェクトでも禁止とはいかないないまでも蛇蝎のように嫌われていました。
(こちら危険物に付き、取り扱い厳重注意という扱い)
個人的な恨みはありませんが、だからGoto文への馴染みが薄いのです。

【スポンサーリンク】



VBAの最近記事

  1. 【VBA】QRコードを作成したい

  2. 【VBA】CSVを1行ずつ処理したい

  3. Excelシートの最終行を取得したい その1

  4. 【VBA】未だに苦手としていること

  5. 【VBA】モジュール先頭に記述する4種類のOption キーワード ステートメント

関連記事

【スポンサーリンク】




PAGE TOP