• ベストアンサー

動的配列が存在(要素が有る)か否かを判定できますか?

VBAで、「For ループが初期化されていません」エラーが発生します。 動的配列が要素0の時に発生するようです。 動的配列の要素が生成された場合だけ、Forループしたいのですが、 どうやって判定すればよいのでしょうか? ------------------------------- Dim 配列() As Integer Dim i As Integer i = 0 If (i < 0) Then ' 本当は真になったり偽になったり ReDim 配列(0 To i) 配列(i) = a + b i = i + 1 End If '' if ★★★ then '' 配列が有るか確認 For Each c In 配列 MsgBox c Next '' end if -------------------------------

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 動的配列の要素が生成された時だけ、For ~Loop するなら、#2 さんのご指摘のように、動的配列を生成したときに、フラグを立てるのが一番簡単ですね。配列変数を、Integerと最初から宣言してしまっていますから、それ自体が変化したことを、値を取り出す方法以外には、チェックできませんね。 以下は未知の変数の配列を調べる場合、VBAでは以下のような方法を使います。  On Error Resume Next  dummy = 配列(0)  Err.Clear  'プロシージャ内で、使いまわしする場合は、必要  On Error GoTo 0  If dummy <> Empty Then   For Each c In 配列    MsgBox c   Next  End If  dummy = Empty 'dummy を使いまわしする場合は、一旦空にする。

xespr
質問者

お礼

皆さんありがとうございます! 非推奨とわかるだけでも大変助かります。ありがとうございました!

その他の回答 (2)

回答No.2

ベタなやり方ですが、 仮にフラグ=Falseとしておいて、 >If (i < 0) Then ↑ここを通った時にフラグ=True んで、 If フラグ=True Then For ループ …

  • JeanneNet
  • ベストアンサー率48% (100/208)
回答No.1

こんにちは、じゃんぬねっと です。 VB6 までは配列自体に Nothing (null) という概念がないため、 要素の最大が 0 ならば null ということにしておく仕様が 1 番無難かと思います。 裏技チックに判断する方法はありますが、VB ではあまりお勧めできないです。

xespr
質問者

お礼

こんにちわ。じゃんぬねっとさん。素早いご回答ありがとうございます! 非推奨とわかるだけでも大変助かります。ありがとうございました!

関連するQ&A