もくじ
特殊な配列
基本的な配列は下のリンクの記事までで、一通り説明しました。まだ読まれていない方は読んでみてください。
これまでに静的配列、動的配列、多次元配列の基本を解説してきましたが、配列にはその3つと異なる異色な物が存在します。
難しいわけではありませんが、使用されているコードを見る機会がありますので、こんなものもあるんだ、位の気持ちで読んでください。
多段階配列
多段階配列と言われてピンとくる方はいらっしゃいますか?
ピンときませんよね(笑)
多段階配列とは、他のプログラミング言語では「ジャグ配列」などと呼ばれたりもします。
簡単に説明すると配列の要素が配列であるものです。
要は配列が入れ子になっている配列です。
わかり難いので、実例を載せますね。
まず下の図の様なCSVを用意してください。
※Sample.csvとファイル名をつけ保存してください。
この、CSVを読み込んでジャグ配列へ格納したいと思います
Sample.csvを保存した場所へエクセルファイルを作り、VBEの標準モジュールへ下記コードを記述してください。
Option Explicit
Sub MakeJaggedArray()
Dim myArray() As Variant, myCnt As Long
Dim myFName As String, myFNo As Integer
Dim myLineBuf As String, mySplitBuf() As String
'読み込むCSVファイルのパス
myFName = ThisWorkbook.Path & Application.PathSeparator _
& "Sample.csv"
'未使用のファイル番号
myFNo = FreeFile
'Openステートメントを使って入力用に開く
Open myFName For Input As #myFNo
'1行目はタイトル行(不要)
Line Input #myFNo, myLineBuf
'最終行まで順に読み込む
While Not EOF(myFNo)
'各行の内容をカンマで区切った配列からなる配列を生成
Line Input #myFNo, myLineBuf
mySplitBuf = Split(myLineBuf, ",")
ReDim Preserve myArray(myCnt) As Variant
myArray(myCnt) = mySplitBuf
myCnt = myCnt + 1
Wend
Close #myFNo
Stop
End Sub
Stopステートメントで止まったところでローカルウィンドウを開くと次の図の様に配列が出来上がっていると思います。
通常の多次元配列との違いがお分かりでしょうか?
ポイントはmyArray(X)(Y)となっています。
多次元配列の場合、myArray(X, Y)となっていましたよね。
これが多段階配列(ジャグ配列)です。
おわりに
今回サンプルの多段階配列(ジャグ配列)は使い道がわからないかも知れませんが、もっと実用的なジャグ配列を配列シリーズの記事で使っていきたいので、頭の片隅にでも、「こんな機能があるんだ」くらいに覚えていただくと良いかと思います。
ジャグ配列を取り上げている書籍はVBAでは少ないです。
C#やVB.NETなどの書籍を読むと記載があります。
ぜひVBAに読み替えてC#などの書籍も読んでみると出来ることが一気に増えるかと思います。
複数の言語を学ぶことで、プログラミング力が飛躍的に向上するのでC#の本も読んでみてください。