ExcelVBAで簡単に配列を作る方法

中級VBA

はじめに

 ExcelVBAで配列を作るには、以下のように定義できます。

 Array(“Sheet1”, “Sheet2”, “Sheet3”)

 ただ、配列の要素を後から定義したい事もあるでしょう。
 そのような場合、動的配列を定義する方法もありますが、もっと簡単に文字列を追加しながら配列を定義する方法を解説します。

Split関数を使って配列を定義する

 Split関数は、文字列区切り文字で切り分けて配列を作ってくれる関数です。
 これを利用すれば、簡単に配列を作ることができます。
 
 Split ( 文字列 , 区切り文字 )

 “Sheet1, Sheet2, Sheet3” –> {「Sheet1」「Sheet2」「Sheet3」

 引数の文字列区切り文字列で分割して配列を作ります。
 返り値はバリアント型の変数で受けるようにします。

サンプルプログラム

 例として、ブック内のシート名を要素に持つ配列を定義してみます。

Sub buildArray()
    Dim myArr '必ずバリアント型の変数を使う
    Dim str As String
    Dim i As Long
    
    For i = 1 To Worksheets.Count
        str = str & "," & Worksheets(i).Name
    Next i
    
    '先頭の区切り文字を削除
    str = Right(str, Len(str) - 1)
    
    myArr = Split(str, ",") '配列にする
    
    For i = 0 To UBound(myArr)
        Debug.Print "myArr(" & i & ") = " & myArr(i)
    Next i
End Sub

プログラム解説

 配列を定義する変数はバリアント型の変数にしておきます。
 これは、Split関数の返り値をバリアント型で受けるためです。
 
 次にブック内のシート名をカンマ付きで文字列に連結していきます。
 
 文字列を連結し終わったら、先頭にあるカンマを削除しておきます。
 
 あとは、Split関数を使ってカンマで区切られたシート名を配列にします。
 
 出来上がった配列は、0番目から始まりますので注意してください。

  myArr(0) = Sheet1
  myArr(1) = Sheet2
  myArr(2) = Sheet3
  myArr(3) = Sheet4

まとめ

 Split関数を使えば、文字列を区切り文字を付けて追加していけば、簡単に配列化してくれます。
 追加の際、文字列の最初にカンマがあると、配列要素の最初が空白の文字列となってしまうので、削除しておくようにします。
 
 Split関数を使って配列を作る場合、基本的に配列の開始は0から始まりますので注意してください。
 (オプションで変更可能です。)

 活用してみてください。

タイトルとURLをコピーしました