無限ループ

Do Loopステートメントによる繰り返しを終了するかどうかは、条件式の演算結果で決まります。

作成したプログラムに誤りがあると、 繰り返しを終了するための条件が満たされず、いつまでたっても終了しないことが起こりえます。このような場合を 無限ループと呼び、マウスクリックやキー入力を受け付けなくなってしまいます。

(キー入力を待つ場合など、意図的に無限ループを使用する場合もあります。

無限ループの例

Sub Calc_Total_While09()
  Dim Count    ' 回数
  Dim Total    ' 合計
 
  Count = 0
  Total = 0
  
  Do While Total <= 100
    Total = Total + Count
  Loop
  
  MsgBox Count
  
End Sub

このプログラムでは、回数の値を増やすCount = Count + 1 の行がないため、Countの値はずっと0のままで、 合計の値は増えていきません。繰り返しを終了するための条件が満たされず、いつまでたっても終了しないことになります。

無限ループに陥ったと思われる場合、Ctrl + Pauseキーを押すと、図のようなダイアログボックスが出ます。

[終了]をクリックしてプログラムを終了させてください。

それでも終了しない場合はCtrl + Alt + Deleteキーを押してタスクマネージャを起動し、Excelのプロセスを強制終了してください。

なお、強制終了すると保存していないプログラムの内容は消えてしまいます。プログラムを実行する前には必ずファイルを保存してください。

正しいプログラムの例

Sub Calc_Total_While09()
  Dim Count, Total    ' 回数と合計 初期値は 0 になっています
  
  Do While Total <= 100
    Count = Count + 1
    Total = Total + Count
  Loop
  
  MsgBox Count
  
End Sub
メニューページへ