- Excel VBA 質問スレ Part59
329 :デフォルトの名無しさん (ワッチョイ 071f-BmB6)[sage]:2019/02/19(火) 19:40:34.45 ID:VgLhyIar0 - カンマ区切りのCSVファイルを2次元配列に入れたい。
Dim arr() arr=getCSVData(strFile) private Function getCSVData(byval ...)as string() Dim tarArr() //処理 getCSVData=tarArr end Function こんな感じで配列にして1次元が行、2次元が列に格納したいんですが ReDim、ReDim Preserveのタイミング等々が分かりません。 先に一度開いて行数と列数の最大を取得してからReDimでtarArrを2次元配列にし、もう一度開いて一行ずつ読み取ってカンマ区切りをsplitして配列に入れてからUBound分ループしてtarArrに入れる方法ですかね?
| - Excel VBA 質問スレ Part59
339 :デフォルトの名無しさん (ワッチョイ 071f-BmB6)[sage]:2019/02/19(火) 22:45:04.21 ID:VgLhyIar0 - >>330
自分でも調べてたけど、「最後の要素しか増やせない」って同じこと書いてありました。これは 例えば、行数読んだ結果がLcnt=10だとして まず ReDim(Lcnt,0)で作り 配列(0 to 10,0)ができ Redim Preserve(Lcnt,Ubound(Split(1行目)) 区切った値が5なら 配列(0 to 10,0to5)が出来てしまい、いっぺんに右の要素数が変更されるってことで合ってます? と言うことは、1行目が5列で次に読んだ2行目が3列なら右の要素数は3に減るって事ですかね? ifか何かで要素数は増える時だけRedim Preserveのが良いですかね?
|
|