【配列をセルに一括貼付け】セル範囲がアンマッチだとどうなるか(VBA)

2021年2月22日

配列をシートへ一括貼付けするテクニック、使っていますか?
私はよく使っています。

この貼付けをする時は大抵、配列数とセル範囲を同じにしていると思います。
ところが偶然、セル範囲のが狭い場合でも貼付けができることに気付きました。

この疑問を解消するため、配列数とセル範囲がアンマッチの場合にどのような動作をするのか検証してみました。

一括貼付けをよくやるよ、という人はご一読あれ。

1.セル範囲のが狭い場合

Sub SmallCells()
    Dim arr(1 To 4, 1 To 1) As Integer, intI As Integer
    For intI = 1 To 4
        arr(intI, 1) = intI
    Next
    Cells(1, 1).Resize(3, 1) = arr
End Sub

4×1次元の二次元配列を3×1のセル範囲へ貼り付けしようとしています。

この場合、全ての配列を貼付けることはできず、3×1の範囲のみが貼付けされます。

2.セル範囲のが広い場合

Sub LargeCells()
    Dim arr(1 To 4, 1 To 1) As Integer, intI As Integer
    For intI = 1 To 4
        arr(intI, 1) = intI
    Next
    Cells(1, 1).Resize(3, 1) = arr
End Sub

3×1次元の二次元配列を4×1のセル範囲へ貼り付けしようとしています。

この場合、配列が不足している範囲は#N/Aとなっています。
空白ではなく#N/Aとなってしまうため、セル範囲のが広くならないように工夫する必要があります。

まとめ

  • セル範囲のが狭い場合は、すべての配列は貼り付けられないが特に問題なし
  • セル範囲のが広い場合は、#N/Aとなってしまうため工夫が必要

《配列の一括貼付け》一次元配列の貼付けも検証しています。

他の「VBA」の記事はこちらからどうぞ