PeaceJetのブログ

金融系の社内エンジニアをやりながら、マーケティングやプランナーなども

publicな配列を定義する方法を考える。【ExcelVBA・エクセルマクロ】

いろいろ調べてみたのですが、ExcelVBAでは
配列を定数として定義することが出来ないようです。

以下の記述はエラーになります。

Const TargetArray As String = Array("hoge", "foo", "bar")

従って、定数として使用するには工夫が必要になります。

そこで、2つの方法が考えられそうです。
※ただ、配列をそのまま定義はできません。

ポイント

  1. 独自に関数を作る。
  2. Split関数を使用する。

上記のなかで、簡単なのは
Split関数を使用するものだと思います。

ソースコード

Public Const TargetArray As String = "hoge,foo,bar"    '最上部に書いてください。
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
Sub ConstArrayTest()

    OwnArray = Split(TargetArray, ",")
    
    For i = 0 To 2
        
        Debug.Print OwnArray(i)
    
    Next i
    
End Sub

上記のようにすることで、各プロシージャで
配列定数を使用できるようになります。

補足

ちなみに、ポイントで示した独自に関数を作るについて
例を以下に記しておこうと思います。

'関数
Function GetElementByArray(ByVal TargetId As Long) As String
    
    Dim RetVal As String

    Select Case TargetId
    
        Case 0: RetVal = "abcde"
        Case 1: RetVal = "fghih"
        Case 2: RetVal = "klmno"
    
    End Select

    GetElementByArray = RetVal

End Function

'呼び出し側
Sub Calling()

    For i = 0 To 2

        Debug.Print GetElementByArray(i)

    Next i

End Sub