Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


40434 / 76732 ←次へ | 前へ→

【41396】Re:Do〜Loopについて
発言  ichinose  - 06/8/8(火) 23:47 -

引用なし
パスワード
   ▼ToShiYo さん:
こんばんは。

>たとえば
>
>Do While ActiveCell <> ""・・・Loop
>と
>Do・・・Loop While activeCell<>""
>の違いについて
>
>ループの初めで条件判断させることは理解できますが
>ループの後で条件判定させなければならないようなケースは
>どのようなことなのでしょうか。
>そのような具体的な例はあるのでしょうか?

>Do・・・Loop While activeCell<>""

は、最低でも一回は、Do〜Loopの中のコードを実行する場合に使うと便利です。


>Do While ActiveCell <> ""・・・Loop

は、条件によっては、一度もDo〜Loopの中のコードを実行することがない可能性が
あるコードです。


例1

1〜100までの整数を乱数を使用して無作為に数字を取得して、
目標値が取得できるまで、A1から順に取得したデータを書き込みます。
目標値をセルAnに書き込んだら、処理は終了です。
目標値が100だとすると、A列に

2
3
50
30
35
100

のように表示します。

標準モジュールに

'===========================================================
Sub test1()
  Const 目標値 As Long = 100
  Dim rw As Long
  Dim myval As Long
  Columns(1).ClearContents
  Randomize Now()
  rw = 1
  Do
    myval = Int(Rnd() * 目標値) + 1
    Cells(rw, 1).Value = myval
    rw = rw + 1
    Loop While myval <> 目標値
End Sub


これを
Do While 〜・・・Loopの形でコード化すると、

'========================================================
Sub test1()
  Const 目標値 As Long = 100
  Dim rw As Long
  Dim myval As Long
  Columns(1).ClearContents
  Randomize Now()
  rw = 1
  myval = Int(Rnd() * 目標値) + 1
  Do While myval <> 目標値
    Cells(rw, 1).Value = myval
    rw = rw + 1
    myval = Int(Rnd() * 目標値) + 1
    Loop
  Cells(rw, 1).Value = myval
End Sub


と、どちらでも大抵のことは出来ます。

どっちがすっきりしているかですが・・・。

0 hits

【41393】Do〜Loopについて ToShiYo 06/8/8(火) 22:12 質問
【41395】Re:Do〜Loopについて へっぽこ 06/8/8(火) 23:37 発言
【41396】Re:Do〜Loopについて ichinose 06/8/8(火) 23:47 発言
【41405】Re:Do〜Loopについて だるま 06/8/9(水) 9:39 回答

40434 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free