- ベストアンサー
配列をループでたくさん宣言したいのですが、配列名や変数名を変数で宣言することはできませんか?
お世話になっております。 タイトル通りの質問です。 日付がファイル名になっているCSVファイルが複数あるのですが、 それをそのまま「array20071020」などという名前の配列に、それぞれ入れて行きたいと思います。ループ処理でなければ出来ないと思うのですが、ループ処理内で配列を宣言していく方法はあるでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
dim array20071020 as string dim array20071021 as string dim array20071022 as string ... みたいな事をプログラムでと言う事だと思うのですが、多分できないと思います。 で、excelにはcollectionと言う、名前も変数も文字にできるオブジェクトがあるので、 dim csv as new collection csv.Add loadCsv("20071020"),"20071020" csv.Add loadCsv("20071021"),"20071021" csv.Add loadCsv("20071022"),"20071022" (loadCsvはたとえばの関数です) と追加しておけば、 str=csv("20071020") で読み出せます。 collectionのアイテムは、文字とか変数だけではなく、配列やオブジェクトとかを、個々に指定できる点が便利です。 Dim hoge(1, 2) As Integer hoge(1, 1) = 11 hoge(1, 2) = 12 Dim fumu As New Collection fumu.Add 123, "20071020" fumu.Add "abc", "20071021" fumu.Add hoge, "20071022" fumu.Add Range("A1:C5"), "20071023" MsgBox fumu("20071020") MsgBox fumu("20071021") MsgBox fumu("20071022")(1, 1) MsgBox fumu("20071022")(1, 2) MsgBox fumu("20071023").Rows.Count MsgBox fumu("20071023").Columns.Count
その他の回答 (1)
- ki-ton
- ベストアンサー率50% (3/6)
Set StrCSV = CreateObject("Scripting.Dictionary") StrCSV("array20071020") = "A" StrCSV("array20071021") = "B" StrCSV("array20071022") = "C" StrCSV("array20071023") = "D" もし、VB6なら上記のような連想配列というのがあります。
お礼
ご返信遅れてすみません。 今回はNo.1さんに教えていただいた方法で試行錯誤し、ようやく希望通りのことができました。 連想配列を使う方法、なんとか頭では理解できましたので、こちらでやる方法も勉強してみたいと思います。 どうもありがとうございました<(_ _)>
お礼
ご返信遅れましてすみません。 Collectionをの使い方を勉強して、無事希望通りのことができました。 配列ではなくDataTableを使いましたが、 教えて頂いたようにそれぞれのCSV内のデータをDataTableに入れる関数をつくり、キーを変数で指定できたのでループ処理でコレクションに追加できました。 どうもありがとうございました<(_ _)>