重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

For i = 1 to 9
Next i

Do
i = i + 1
Loop Until i = 9
はほとんど一緒じゃないのでしょうか?
For Nextは使わなくてもDo Untilで代用できるんじゃないでしょうか?

A 回答 (5件)

こんばんは。



初歩の質問だとは思います。Do ~ Loop の Until や While で条件として判定するのは、True, False ということです。それを毎回、判定しています。数値化して、初期値と最終値を得られるものなら、For i=初期値 To 最終値 の方が楽です。また、インデックスを持ったものは、途中で抜き出すのも楽です。しかし、初期値・最終値が計数化しにくいものがあります。例えば、テキストファイルやバイナリファイルは、その終わりは、特別な信号(EOF,LOF) を持っていて、その最終値を数値化するのに複雑になるものがあります。

Excelのワークシートのように、Cells は、元々、行や列で数値を持ったものです。それを、わざわざ、Range オブジェクトの中のプロパティでループのたびに判定する必要はありません。だから、Excelでは、Excel VBAを知っている人なら、圧倒的に、For 初期値~ To 最終値 のほうを選びます。しかし、他の条件、他のオブジェクトでは、そう行かないものもまたあります。条件判定するオブジェクトや条件によって、使い分けが必要です。

いろいろなコードを書いてみることをお勧めします。
    • good
    • 0
この回答へのお礼

もっと上達すれば使い分け方もわかってくるのでしょうね。
ありがとうございました。

お礼日時:2009/01/24 09:18

ループ処理に限らず、他の処理でも用意されたステートメントを使って、実現するための方法はいくつも出てきます。


言語で用意されたステートメントを適切に使って、プログラムを分かり易く書くほうが良いのではないでしょうか。

例えば For~NextとDo~Loopの単純な違いは、
直接数値を指定の場合は、For文の1行でループ条件がわかる。
Doはカウンタを持たないので、他のループ条件を指定でき、前判断や後判断ができるが、カウンタ、その他の判定条件の記述が必要。
ということになるので、その場面場面で適切なものを使うのが一番かと。

いろいろな繰り返し処理
http://home.att.ne.jp/zeta/gen/excel/c04p21.htm
 
    • good
    • 0
この回答へのお礼

なるほど。
もっとFor Nextや Do Loopについて知らないとダメですね。
ありがとうございました。

お礼日時:2009/01/24 07:28

こういう感じなのでしょうかね


Sub test()
 Dim i As Integer
 i = 1
  for i = 1 to 0 step 1
   If Cells(i, 1) <> Cells(i, 2) Then
    i = 0
    MsgBox "不一致"
   Elseif i>= 65535 then
    i = 0
    MsgBox "一致"
   End If
  next i
End Sub
    • good
    • 0
この回答へのお礼

すみません。
プロシージャが読めませんでした。
ありがとうございました。

お礼日時:2009/01/24 09:26

ご提示のような作業だとDo~Loopで十分かもしれませんが、



Dim MyFile As File
Dim FSO AS Object

Set FSO = CreateObject("Scripting.FileSystemObject")
For Each MyFile In FSO.Getfolder(Fol).Files
MsgBox MyFile.Name
Next Myfile

のような作業はDo~LoopとDir関数使っても出来るけど、
For~Nextの方が扱いやすいしコードも簡潔になりますね。
    • good
    • 1
この回答へのお礼

コードの簡潔さという利点があるのですね。
よくわかりました。
ありがとうございました。

お礼日時:2009/01/24 07:26

代用はできますけど、カウンタとして使っているiを自分でカウントアップする必要がなくなります。

こういう余計な処理を自分で書くと忘れることがあって、バグの元になります。使える言語機能は使った方が楽です。
    • good
    • 0
この回答へのお礼

便利なものは使ったほうがよいのですね。
ありがとうございました。

お礼日時:2009/01/24 07:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!