0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Excel VBA】Array関数|配列を作成する方法と注意点

Last updated at Posted at 2025-07-29

この記事ではArray関数の使い方と注意点について解説します。
他のよく使うVBA関数一覧はこちら。

Array関数の使い方と注意点

Array関数は、複数の値をまとめてVariant型の配列として返す関数です。
簡単に配列を作れる一方で、型や挙動に関する注意点も多く、正しく理解して使うことが大切です。

Array関数が返す配列は必ずVariant型の1次元配列になります。
型付き配列(例:String()Integer())には直接代入できない点にも注意が必要です。

構文

Array(要素1, 要素2, ..., 要素n)
  • 要素1〜n : 配列に格納したい値。個々の型は混在可能です。
  • 戻り値 : Variant 型の1次元配列(要素の添字は0から始まりますが、Option Baseの設定により変わることがあります)

使用例

配列を作成する

Sub Sample()
    Dim MyArray As Variant
    MyArray = Array("ABC", "あいう", "123")

    Debug.Print MyArray(0)
    Debug.Print MyArray(1)
    Debug.Print MyArray(2)
End Sub

▶ 出力結果

ABC
あいう
123

インデックス番号を指定して値を取り出す

Sub Sample()
    Dim MyArray As Variant
    MyArray = Array("A", "B", "C")

    Debug.Print MyArray(0)
    Debug.Print MyArray(1)
    Debug.Print MyArray(2)
End Sub

▶ 出力結果

A
B
C

配列の要素をループ処理する

Sub Sample()
    Dim MyArray As Variant
    For Each MyArray In Array("ABC", "あいう", "123")
        Debug.Print MyArray
    Next
End Sub

▶ 出力結果

ABC
あいう
123

⚠️注意

配列の下限(開始インデックス)は通常「0」

Array関数で作った配列は、通常は0から始まります
ただし、モジュールの先頭にOption Base 開始インデックス番号を書くと、下限が指定した開始インデックス番号になります。

Option Baseとは?
固定長配列Dimで定義する配列の下限(開始インデックス)を変更するための宣言です。

  • 通常の配列作成
Sub Sample()
    Dim MyArray As Variant
    MyArray = Array(100, 200, 300)

    Debug.Print LBound(MyArray)
    Debug.Print UBound(MyArray)
End Sub

▶ 出力結果

0
2
  • Option Baseを使用した配列作成
Option Base 1
Sub Sample()
    Dim MyArray As Variant
    MyArray = Array(100, 200, 300)

    Debug.Print LBound(MyArray)
    Debug.Print UBound(MyArray)
End Sub

▶ 出力結果

1
3

LBound/UBound関数とは?
LBound関数 : 配列の下限(最小インデックス)を取得する関数
UBound関数 : 配列の上限(最大インデックス)を取得する関数

型付き配列には代入できない

Sub Sample()
    Dim StrArr() As String
    StrArr = Array("A", "B")  ' ← エラー(型の不一致)

    Dim VarArr As Variant
    VarArr = Array("A", "B")  ' ← OK
End Sub

型付き配列に代入する場合は、要素をループで代入する必要があります

Sub Sample()
    Dim StrArr() As String
    Dim VarArr As Variant
    Dim i As Integer

    VarArr = Array("A", "B", "C")

    ReDim StrArr(LBound(VarArr) To UBound(VarArr))

    For i = LBound(VarArr) To UBound(VarArr)
        StrArr(i) = VarArr(i)
    Next i

    For i = LBound(StrArr) To UBound(StrArr)
        Debug.Print i & ": " & StrArr(i)
    Next i
End Sub

▶ 出力結果

0: A
1: B
2: C

空の要素やデータ型の混在に注意

Sub Sample()
    Dim MyArray As Variant
    MyArray = Array(1, "", Null, Empty, "文字列")

    Debug.Print IsEmpty(MyArray(3))  ' True
    Debug.Print IsNull(MyArray(2))   ' True
    Debug.Print Len(MyArray(1))      ' 0
End Sub

上限・下限のインデックスを指定して配列を作成する方法

Array関数では、配列のインデックスの下限や上限を直接指定することはできません。
もし特定の下限・上限で配列を作りたい場合は、DimReDimを使って配列を宣言し、必要な範囲を指定します。

Sub Sample()
    Dim MyArray() As String
    Dim i As Integer
    
    ' 配列の下限を1、上限を3に指定して宣言
    ReDim MyArray(1 To 3)
    
    ' 要素に値を代入
    MyArray(1) = "A"
    MyArray(2) = "B"
    MyArray(3) = "C"
    
    ' 確認用に出力
    For i = LBound(MyArray) To UBound(MyArray)
        Debug.Print i & ": " & MyArray(i)
    Next i
End Sub

▶ 出力結果

1: A
2: B
3: C

このようにReDimを使うと、インデックスの範囲を自由に指定可能です。
Array関数のように一括で値を渡すことはできませんが、柔軟にインデックスを設定したい場合はこちらを利用しましょう。

関連するVBA関数

  • Split関数
  • Join関数
  • UBound関数
  • LBound関数

その他のVBA関数

【Excel VBA】VBAでよく使う関数一覧&基本の使い方

参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?