vba do whileの使い方

vba do whileの使い方

岡本 峻輔

岡本 峻輔

ヘルプデスク/エンジニア歴2年

vbaで処理を実行し続ける方法は、forステートメント、do whileステートメント、do Untilステートメントなどがあります。ここでは、”do whileステートメントについて、forステートメントとの使い分けも含めて説明していきます。


1.do whileについて

1-1.vbaにおけるdo while

do whileステートメントは、繰り返し処理を実行させたい場合に使用する制御構文です。forステートメントとは違い、繰り返す回数が決まってない場合でも使用できます。

1-2.使用上の注意

繰り返す回数が決まってないため、条件次第では、永久に処理を実行し続ける無限ループに陥ることがあります。使用する際は、指定した条件に終わりがあることを確認しましょう。無限ループさせてしまった場合は、[ESC]キーをクリックして処理を中断させてください。


2.do whileの使い方

2-1.do while loopとdo loop whileについて

  • do while loop

do while Loopは条件式を判定してから処理が実行されます。以下は基本の書式になります。

Do while 条件式
    処理
Loop

<例>
ループ処理のたびに1ずつ加算し、5以上になるまで繰り返すプログラム。

Sub sample()
Dim a As Integer
a = 1
Do While a < 5
  Debug.Print a & "回目。"
  a = a + 1
Loop
End sub
  • do loop while

do while Loopでは最初に条件式を判定するため、条件を満たさなければループせずに処理が終了することもあります。最初の1回だけでも処理させたいときには、do loop whileを使いましょう。以下は基本の書式になります。

Do
    処理
Loop while 条件式

<例>
1から10のランダムな数を計算して、5が出るまで繰り返すプログラム。
5が出るまで処理がループします。

Sub sample()
Dim a As Integer
Do
  num = Int(Rnd * 10) + 1
  Debug.Print  a & "が出ました。"
Loop While a <> 5
End sub

2-2.forステートメントとの使い分け

どちらも処理を繰り返すときに用いられる制御構文ですが、以下の様に使い分けることが出来ます。繰り返し処理させたい回数が状況に応じて変わる場合はdo whileステートメント。繰り返し処理させたい回数が決まっている場合はforステートメント。

例えばこんなときは、do whileステートメント

  • 特定の値や文字が入力されるまで処理を続ける様なプログラム
  • 繰り返し処理の判定条件が乱数の様な変化する値に依存するプログラム

例えばこんなときは、forステートメント

  • 繰り返し回数が処理の結果に依存することが無いプログラム
  • 指定した終了条件に達すれば処理を終了する様なプログラム

3.応用編

3-1.ループを途中でスキップさせたいとき

ループを途中でスキップさせるには、GoToステートメントを使います。GoToステートメントのラベルdo whileステートメントのループ内の先頭に指定します。GoToステートメントに到達すると以降の処理は実行されずに、ループの最初(ラベルの位置)へ移動します。

<例>
繰り返し回数が3になると処理をスキップするプログラム

Sub sample()
Dim i As Integer, str As String
 
  Do While i < 5
L1: ‘←GoToステートメントのラベル
   i = i + 1
   If i = 3 Then
    GoTo L1
   End If
   str = str & i & "回目です" & vbCrLf
  Loop
  
  str = "処理が終了しました"
  MsgBox str
End sub

3-2.ループを抜けたいとき

ループを途中で抜けるには、Exitステートメントを使います。処理がExitステートメントに到達すると、ループ内のそれ以降の処理は実行されずにループを抜けます。

<例>
繰り返し回数が5になるとループを抜けるプログラム

Sub sample()
Dim i As Integer, str As String
 
  Do While i < 10
   i = i + 1
   If i > 5 Then
    Exit Do
   End If
   str = str & i & "回目です" & vbCrLf
  Loop
    
  str = "5回目で終了します"
  MsgBox str
End sub

繰り返し処理を実行させる方法として、do whileステートメントを紹介しましたが、冒頭にも記載した通り、繰り返し実行させる方法は他にもあります。状況に合わせて使い分けるようにしてください。

私たちは、全てのエンジニアに市場価値を高め自身の望む理想のキャリアを歩んでいただきたいと考えています。もし、今あなたが転職を検討しているのであればこちらの記事をご一読ください。理想のキャリアを実現するためのヒントが見つかるはずです。

『技術力』と『人間力』を高め市場価値の高いエンジニアを目指しませんか?

私たちは「技術力」だけでなく「人間力」の向上をもって遙かに高い水準の成果を出し、関わる全ての人々に感動を与え続ける集団でありたいと考えています。

高い水準で仕事を進めていただくためにも、弊社では次のような環境を用意しています。

  • 定年までIT業界で働くためのスキル(技術力、人間力)が身につく支援
  • 「給与が上がらない」を解消する6ヶ月に1度の明確な人事評価制度
  • 平均残業時間17時間!毎週の稼動確認を徹底しているから実現できる働きやすい環境

現在、株式会社ボールドでは「キャリア採用」のエントリーを受付中です。

まずは以下のボタンより弊社の紹介をご覧いただき、あなたの望むキャリアビジョンをエントリーフォームより詳しくお聞かせください。

コメント

公式アカウントLINE限定!ボールドの内定確率が分かる無料診断実施中
公式アカウントLINE限定!
ボールドの内定確率が分かる無料診断実施中