• ベストアンサー

Excel(VBA)で配列の要素数を調べるには?

お世話になります。 ExcelのVBAで、split関数を使って配列に格納したデータの要素数を調べる方法がわかりません。 下記のようなコードで、読み込んだデータを配列(Arraydata)に格納することは出来たのですが、test.csvの要素数が処理の度に変わるため、要素数に応じて後続の処理を行ないたいと考えています。 Open test.csv For Input As #1 ' test.csvファイルを開く Line Input #1, test.csv ' データ行を読み込む Arraydata = Array(Split(test.csv, ",")) ' 配列に格納 よろしくお願いします。

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

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

こんにちは。 >Arraydata = Array(Split(test.csv, ",")) ' 配列に格納 Split で配列になっているものを、さらに配列にしても、何も取れないはずです。それ自体は、以下のようになるのですが、 Arraydata = Split(test.csv, ",") >ExcelのVBAで、split関数を使って配列に格納したデータの要素数を調べる方法がわかりません。 データの添え字を調べてどうするのでしょうか? そのままでは、 添え字は、 Lbound(Arraydata) ~Ubound(Arraydata) なんでしょうから、Option Base 1 でもしていなければ、0 ~上限までです。 だから、次は、ワークシートに貼り付けるぐらいしかありませんから、例えば、ワークシートに貼り付けるなら、そのまま、配列を貼り付ければよいと思います。 i = i + 1 Range("A1").Offset(i).Resize(, UBound(Arraydata) + 1).Value = Arraydata なんていうことをしますね。

tonaka
質問者

お礼

ワークシートへの貼り付け方法までご教授頂きありがとうございました。 また、配列への格納は、ご指摘頂いた通り「Array」が冗長でした。 要素数を調べた後、For文でセルへのセット処理を回そうと考えていたのですが、このようなスマートな方法で出来るとわかり、勉強になりました。

その他の回答 (1)

回答No.1

uboundで取れませんか? ちょっと試していないので曖昧ですが・・・ i = UBound(Arraydata) ってな感じですかね。

tonaka
質問者

お礼

早速ご回答いただきありがとうございました。 教えていただいた関数で要素数を取得できました! ヘルプ等でArray関係の関数を調べていたのですが、UBoundという関数には気付きませんでした。

関連するQ&A