重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

全レコードが不明のファイルから、レコードを読み込んで分割し二次元配列に格納したいのですが、項目(列)数は確定しています。この場合は、どうすればレコード(行)数を動的に変更していく事が出来るのでしょうか?

ヘルプを見ても、ReDim x(行, 列)だったら、列しか変更出来ないように書いてあって困っています。
どなたか、御教授をお願いします。

A 回答 (5件)

レコードを作成する側で、


レコード数を先頭に書き込むようにしたらどうでしょう。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/01/11 14:46

項目数が分かっているのでしたら#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)
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/01/11 14:44

メモリに余裕があるなら、いったん


"Scripting.Dictionary"オブジェクトで全部読み込んでしまってからReDimする
あるいは、文字列として、いったん全部読み込みしてSplitで配列にする、以下前出と同じ

余裕がないなら、ファイルを一度空読みして、レコード数を決定してReDimしてから、ファイルを読み直す
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/01/11 14:00

2次配列の動的確保は#1さんの方法しかないと思います。



違った方法になりますが、ユーザー定義型を使用して
みてはいかがでしょうか?

Private Type rcd
komoku(項目数を入れてください) As String
End Type
Dim udtRcd() As rcd

この回答への補足

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

補足日時:2005/01/11 13:49
    • good
    • 0

ReDim x(列, 行)


にする

この回答への補足

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

補足日時:2005/01/11 13:32
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!