スライドショー

【ExcelVBA入門】疑似的にcontinueするためのループ処理スキップ方法とは

こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。

皆さんは、VBAでループ処理を途中でスキップする方法を知っていますか?

ループ処理では、無駄な処理を実行せずにスキップしたいケースはよくあります。

そこで今回は、

・処理をジャンプするためのGoToステートメントの使い方

といった基礎的なことから、

・ループ処理をスキップする方法

・ループ処理を途中で終わらせる方法

・ループ処理中にExcelが固まってしまった場合の対処方法

といった応用的な方法まで、徹底的に解説します!

スキップ処理を作るためのGoToステートメントとは

ループ処理をスキップする場合は、GoToステートメントを使います。

そのため、最初にGoToステートメントの簡単な使い方を解説します。

GoToステートメントを使うと、指定したラベル先処理をジャンプすることができます。

使い方:

Sub Test()
  GoTo ラベル名
   '処理1
   '
   '
   '
ラベル名:
   '処理2
   '
   '
   '
End Sub

上の例では、ラベル先の処理2は実行されますが処理1は実行されません。

このように、処理を途中でジャンプすることができます。

GoToステートメントの詳しい使い方については以下で詳しく解説しているので、気になる方は見てみてくださいね!

【VBA入門】GoToでスキップ(ラベル、ループ制御、エラー処理)
更新日 : 2019年4月19日

ループ処理をスキップする方法とは

次に、GoToステートメントを使ってループ処理をスキップする方法を解説します。

最初に、スキップしないループ処理のサンプルを用意しました。

スキップなしのループ処理サンプル:

Sub Test()

  Dim i As Long
  For i = 0 To 10
    Debug.Print i
  Next i
  
End Sub

実行結果:

 0 
 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 

変数iが1~10になるまでループして、iの値を出力する処理ですね。

次に、iが偶数のとき処理をスキップする処理を入れたサンプルがコチラです。

スキップ処理を入れたサンプルコード:

Sub Test2()
  Dim i As Long
  For i = 0 To 10
    'iが偶数のときのみスキップ
    If i Mod 2 = 0 Then
      GoTo Continue
    End If
    
    Debug.Print i
  
Continue:
  Next i
  
End Sub

実行結果:

 1 
 3 
 5 
 7 
 9 

割り算の余りを計算するMod関数を使って、「i Mod 2 = 0」の条件で偶数を判定しています。

偶数判定しているIF文の中に「GoTo Continue」を書くことで、For文の最後に書いているContinueラベルまで処理をスキップしています。

このように、GoToステートメントを使えば、簡単に処理をスキップすることができます。

ループ処理を抜ける方法とは

ここまでスキップする方法を解説してきましたが、For文を終わらせて次の処理に移動したいケースもありますよね。

Exit For」をFor文の中に書くことで、簡単にFor文を終わらせることができます。

ループ処理の途中で処理を終わらせるサンプルコード:

Sub Test3()
  Dim i As Long
  For i = 0 To 10
    
    'iが5になったら処理終了
    If i = 5 Then
      Exit For
    End If
    
    Debug.Print i
  
  Next i
  
End Sub

実行結果:

 0
 1 
 2 
 3 
 4 

この例では、iが5になった時にFor文の処理を終わらせています。

このように、ループ処理を途中で簡単に終わらせることができます。

GoToステートメントスキップExit For終了と覚えておくと、For文が使いやすくなるのでおすすめです!

ループ処理が重たくExcelが固まってしまった場合の対処方法

ループ処理を動かしていると重たい処理をループ処理で動かしてしまった場合や、条件を間違えて無限ループにしてしまった場合など、処理がとまらずExcelが固まってしまうケースがあります。

そのため、処理を強制終了する方法を覚えておくのがおすすめです!

処理を強制終了する方法については、以下で詳しく解説しています。

途中まで書いていたコードを消さずに処理を止める方法についても書いているので、知らない方は見てみるのがおすすめです!

【ExcelVBA入門】処理が固まってしまった場合に強制終了する方法とは
更新日 : 2018年8月29日

補足:VBAでループ処理をする方法3選

今回はループ処理にFor Nextステートメントを使って解説してきましたが、ループ処理は他にもあります。

For Nextステートメントとあわせて、WhileステートメントFor Eachステートメントを覚えておくとループ処理の幅が広がるのでおすすめです!

それぞれ以下のように使い分けることができます。

  • For Next:回数を指定してループ処理したい場合
  • While:指定の値に到達するまで処理をループしたい場合
  • For Each:配列の要素数やオブジェクトの数分処理をループしたい場合

3つのループ処理詳しい使い方については、以下記事で詳しく解説しているので見てみてくださいね!

【ExcelVBA入門】繰り返し処理をするための3つの方法を徹底解説!
更新日 : 2019年8月30日

まとめ

今回は、ループ処理の途中で処理をスキップする方法について解説しました!

ループ処理では、無駄な処理を実行せずにスキップしたいケースはよくあります。

GoToステートメントの使い方はとても簡単なので、ぜひ使ってみてくださいね!

LINEで送る
Pocket

ITエンジニアへ転職したい方におすすめ

自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

侍ワークスは、独自案件を多く掲載しているだけでなく、

・応募から就業まで一貫したサポート

・就業後もアフターフォロー

といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。
Webアプリ、業務アプリ開発において、要件定義、設計、インフラ、製造、テスト、運用保守など、様々な経験あり。
また、侍ブログ編集部として、これまでに200記事以上の記事を執筆。
現在はフリーランスエンジニア兼テックライターとして活動中。