VBAトレーニング-10 [配列操作について-①]-[配列操作の基本]

このページで学習出来る事

 前回までは関数操作を説明してきましたが、今回から配列に関して説明をしていきたいと思います。
 配列に関してはどのプログラミング言語でも使用される概念ですので、その辺も含めてしっかりと配列を勉強していきましょう。

学習内容

  • 配列宣言のやりかた

  • 配列への値の代入と取り出し方

この学習で使用するエクセルファイルはここからダウンロードできます。

  


サンプルコード

 [sample-10.xlsm]を開いて、中に書かれているコードを確認しましょう。

 今回のコードでは、基本的な配列の宣言方法、配列への値の代入、それと配列からの値取得に関する内容が記述されています。
 今後、配列操作の応用などを説明することがありますが、基本的にはこの形に添って配列を扱っていきますので、これら配列の記述方法は覚えておきましょう。

 このファイルをそのまま使用しても構いませんし、新しくエクセルファイルを作って、自身でコードを記載して動かしても構いません。(直接コードを書いた方が覚えやすいので、時間がある方は書く練習もしてみましょう)

Sub main()
    Dim arrayStr(2) As String
    Dim i As Integer
    
    arrayStr(0) = 0
    arrayStr(1) = 1
    arrayStr(2) = 2

    Debug.Print arrayStr(arrayStr(0))
    Debug.Print arrayStr(arrayStr(1))
    Debug.Print arrayStr(arrayStr(2))

    For i = 0 To UBound(arrayStr)
        Debug.Print arrayStr(i)
    Next i
    
    For Each varStr In arrayStr
        Debug.Print varStr
    Next varStr
    
End Sub

コードの解説 配列宣言部分

配列は「[変数名](格納個数-1) As [型]」にて宣言が可能です。
通常の変数と異なり、同一変数に対して複数の個数を格納できるのが配列の特徴です。

配列の格納個数は[0]からスタートしますので、2個の値を入れたい場合は[(1)]と宣言すれば、良いことになります。

‘配列宣言
Dim arrayStr(2) As String

  

コードの解説 配列への代入部分

配列に値を入れたい場合は「[変数名](値を入れたい格納番号) = 値」にて、値を代入することが出来ます。

arrayStr(0) = 0
arrayStr(1) = 1
arrayStr(2) = 2

  

コードの解説 値の取得部分

配列の値を取得する場合は「[変数名](値を取り出したい格納番号)」で取得することが出来ます。

Debug.Print arrayStr(arrayStr(0))
Debug.Print arrayStr(arrayStr(1))
Debug.Print arrayStr(arrayStr(2))

  

コードの解説 Forによる値の取得部分

[For]文を用いることで、連続して値の配列を取得することが出来ます。

[For i = 0]にて配列の格納番号のスタート位置を指定し、[UBound(arrayStr)]にて配列末尾の格納番号を指定しています。
変数[i]が格納番号を指定することで、配列の値を順番に取得していく事が出来ます。

For i = 0 To UBound(arrayStr)
  Debug.Print arrayStr(i)
Next i

  

コードの解説 For Eachによる値の取得部分

[For]文の他にも[For Each]文を使用して配列から値を取得することが出来ます。

[For Each]にて繰り返し文を宣言し、[varStr In arrayStr]にて配列から格納されている値を順番に取得していきます。

For Each varStr In arrayStr
  Debug.Print varStr
Next varStr

 [For]と[For Each]の使い分けですが、とりあえず値だけを取得した場合は[For Each]の方が楽だったりします。
 配列の格納番号を利用したい場合(セルに代入するなど)、開始位置や終了位置を任意に指定したい場合、スピードを求める場合には[For]文を用いた方がよいでしょう。

  


配列への値代入か取得までの動き

 次は、実際に配列へ値が格納されていく流れと、ローカルウィンドウにどのように表示されていくかを見ていきます。
 サンプルマクロの[For i = 0 To UBound(arrayStr)]にブレークポイントを設定し、実行してみましょう。

 実行すると、ローカルウィンドウ内の[arrayStr]に[+]マークが表示され、その中に指定した値が入っているのが確認できます。
 また、配列から値を取得し、[Debug.Print]によって取得結果がイミディエイトウィンドウにも表示されているのが分かります。

 これは、配列の基本中の基本ですが、この様にして配列を宣言し、値を代入し、値を取得するという一連の流れが繋がっていくのが分かると思います。

 別モジュールにある関数を呼び出す場合は「[モジュール名].[関数名]」と指定することで呼び出すことが出来ます。

  


繰り返し文による値の取得

 続けて、止まっている状態から再度プログラムを実行してみましょう。
そうするとプログラムが終了しイミディエイトウィンドウに、配列から取得した値の結果が表示されているのが確認できます。

 今回[For]と[For Each]文の二種類を実行していますので、[0,1,2,0,1,2]が表示され、問題なく二種類の繰り返し文にて配列から値が取得出来たことが分かります。

  


最後に(配列の基本操作について)

 一部例外はありますが、どのプログラム言語でも配列用の宣言をし、値を格納する範囲を決め、そこに色々な値を代入していきます。ExcelVBAでもその部分に変わりはありません。

 今後、色々な配列が出てきますが、やっている内容はここで説明してきた事がベースになりますので、しっかりと配列の流れを覚えておきましょう。

  

 次回は配列の格納範囲の拡張を説明したいと思います。

  

前回-関連記事

このページで学習出来る事  前回は関数の[Private]と[Public]の違いについて説明しましたが、今回はちょっと変わった関数の呼出し方について説明していきます。  関数の呼出しは、基本的に[Call 関数名]で呼び出すことが出来ます[…]