• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:[VBA] For文の使い分けについての疑問)

[VBA] For文の使い分けについての疑問

このQ&Aのポイント
  • VBAを使用して複数列の処理をする場合、For each next文を2つ書く必要があるが、この考え方は合っているのか疑問。
  • For each next文は単列の処理でも問題なく使用でき、For next文は複数列の処理でも使用できるが、VBA的に正しいかどうかは疑問。
  • 質問に不備があれば指摘してほしい。

質問者が選んだベストアンサー

  • ベストアンサー
  • Prome_Lin
  • ベストアンサー率42% (201/470)
回答No.1

私は、「For Next」は、終わりの値が何らかの方法で確定できるときです。 すなわち、上記の質問者の例だと、私は両方とも、「For Next」を使います。 しかし、終わりの値が分かる場合でも、次のように、繰り返すときに数値ではないもので繰り返す場合があります。 For Each f In x.Files If InStr(f.Name, "ABC") > 0 Then ああしなさい、こうしなさい。 End If Next これは、「x」というフォルダに存在するすべてファイルを調べるときに使うものですが、このとき、ファイルの数は「x.Files.Count」によって、取得できます。 単に、繰り返すだけなら「For f = 1 to x.Files.Count」でいいのですが、調べたファイルのファイル名を取得したいような場合は、「For Next」では、どうすることも出来ません。 「For Next」の(例の場合なら「f」)変数は、「数値」だからです。 f.Nameとやっても、ファイル名は取得できません。 これは「For Each Next」でしか、できないのです。 数値でいい場合は、「For Next」の方が圧倒的に便利です。 質問者の例でも、その変数の数値を使って「Cells()」が使えるからです。 単純な回数を指定する場合は、「For Next」、そうでなく、変数が特殊な意味がある場合は「For Each Next」という感じです。

rihitomo
質問者

お礼

ありがとうございます。 参考になりました。

その他の回答 (1)

回答No.2

私は基本的に、配列の場合For Nextを使い、コレクションの場合For Each Nextを使います。 セルに対して何かを行う場合も、セルを配列とみなして処理するならFor Next、コレクションとして扱うならFor Each Nextを使います。

rihitomo
質問者

お礼

ありがとうございます。参考になりました。

関連するQ&A

専門家に質問してみよう