• 締切済み

VBAの配列のLengthについて

はじめまして。 配列の要素の数を出力したいのですが、「修飾子が不正です」と表示されてしまいます。 ネット上の入門サイトで記載されている通りに.Lengthを配列に付けているのに謎です。 どなたか助言をいただければ幸いです。よろしくお願いいたします。 Sub debag() Dim xxx(10) Dim count xxx(1) = 1 xxx(2) = 3 count = xxx.Length MsgBox (count) End Sub

みんなの回答

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

VBAにはLengthが無いからUboundを使うというのはNo.1の方の回答通り。 でも、もしかして配列の中で何か値が入っている要素数を求めたいという事でしたら、UBoundでも、もちろんLengthでも求まりません。 #UBound(xxx)では要素数である10が返ります。 その場合、以下のようにします。 count = 0 For i = 0 To UBound(xxx)   If IsEmpty(xxx(i)) = False Then count = count + 1 Next i MsgBox (count)

newquarter33
質問者

お礼

ご丁寧にありがとうございます! 便利なやり方を教えていただき幸いです。 是非利用させていただきます。

  • Siegrune
  • ベストアンサー率35% (316/895)
回答No.1

VB.net以降(VB2005等)と違って VBAでは、.Lengthなんてありませんが。 配列の最大要素を求めるときは、 ubound(xxx) を使います。 なお、通常、0から始まります(option baseの指定で1からに変更も可能。lbound(xxx)で 調べることができます)ので、lengthとは1ずれるかと思います。

関連するQ&A