• 締切済み

ReDimを使用した二次元配列

全レコードが不明のファイルから、レコードを読み込んで分割し二次元配列に格納したいのですが、項目(列)数は確定しています。この場合は、どうすればレコード(行)数を動的に変更していく事が出来るのでしょうか? ヘルプを見ても、ReDim x(行, 列)だったら、列しか変更出来ないように書いてあって困っています。 どなたか、御教授をお願いします。

みんなの回答

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.5

レコードを作成する側で、 レコード数を先頭に書き込むようにしたらどうでしょう。

KatsuoIsono
質問者

お礼

レコード数は、先頭に書くことは出来ません。 都合上、そうなっているようです。 レコード数は、あくまでもプログラムの方でカウントしなくてはいけないみたいです。

すると、全ての回答が全文表示されます。
  • kachimi
  • ベストアンサー率40% (12/30)
回答No.4

項目数が分かっているのでしたら#2さんの方法がよいと思うのですが・・・ Type A ' 中身は項目のレイアウトにしてください Field1 As String Field2 As Integer End Type dim Rec() as A dim lngRecCnt as Long で宣言し、 lngRecCnt = lngRecCnt + 1 Redim Preserve Rec(lngRecCnt)

KatsuoIsono
質問者

お礼

構造体にしてしまうと、「ガチガチのプログラムになってしまうから」と先輩からの指摘を受けましたので却下したのです。 出来るだけ柔軟に対応できるようにしたいので…。

すると、全ての回答が全文表示されます。
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

メモリに余裕があるなら、いったん "Scripting.Dictionary"オブジェクトで全部読み込んでしまってからReDimする あるいは、文字列として、いったん全部読み込みしてSplitで配列にする、以下前出と同じ 余裕がないなら、ファイルを一度空読みして、レコード数を決定してReDimしてから、ファイルを読み直す

KatsuoIsono
質問者

お礼

その方法も考えました。しかし、処理完了速度の低下の懸念があり却下したんです。

すると、全ての回答が全文表示されます。
  • momoturbo
  • ベストアンサー率55% (49/88)
回答No.2

2次配列の動的確保は#1さんの方法しかないと思います。 違った方法になりますが、ユーザー定義型を使用して みてはいかがでしょうか? Private Type rcd komoku(項目数を入れてください) As String End Type Dim udtRcd() As rcd

KatsuoIsono
質問者

補足

そうですか…。分かりました。

すると、全ての回答が全文表示されます。
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

ReDim x(列, 行) にする

KatsuoIsono
質問者

補足

その方法は考えましたが、改良する時やレコード数が膨大な量になると、プログラミングとして分かりづらいので却下したんです。

すると、全ての回答が全文表示されます。

関連するQ&A