- ベストアンサー
動的配列が存在(要素が有る)か否かを判定できますか?
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 -------------------------------
- みんなの回答 (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 を使いまわしする場合は、一旦空にする。
その他の回答 (2)
- naganaga_001
- ベストアンサー率71% (172/242)
ベタなやり方ですが、 仮にフラグ=Falseとしておいて、 >If (i < 0) Then ↑ここを通った時にフラグ=True んで、 If フラグ=True Then For ループ …
- JeanneNet
- ベストアンサー率48% (100/208)
こんにちは、じゃんぬねっと です。 VB6 までは配列自体に Nothing (null) という概念がないため、 要素の最大が 0 ならば null ということにしておく仕様が 1 番無難かと思います。 裏技チックに判断する方法はありますが、VB ではあまりお勧めできないです。
お礼
こんにちわ。じゃんぬねっとさん。素早いご回答ありがとうございます! 非推奨とわかるだけでも大変助かります。ありがとうございました!
お礼
皆さんありがとうございます! 非推奨とわかるだけでも大変助かります。ありがとうございました!