【VBA】一次元配列を横方向にシートに貼り付け【範囲をリサイズする】
作成日:2022-12-04
更新日:2025-10-01

一次元配列を
「横一行」に
貼りたい
「横一行」に
貼りたい
セル範囲をリサイズして一次元配列を貼り付ける
' Paste 1D array horizontally into a worksheet cell
' 一次元配列をシート上に横方向に貼り付ける
Public Sub PasteToCellResize1AryForX( _
ByVal ws As Worksheet, _
ByVal row As Long, _
ByVal col As Long, _
ByRef ary As Variant)
' 要素数 = UBound - LBound + 1(0始まり/1始まりの差異を自然に吸収)
Dim colCount As Long
colCount = UBound(ary) - LBound(ary) + 1
' 横方向に colCount 列分を貼り付け
ws.Cells(row, col).Resize(1, colCount).Value = ary
End Sub

Resizeって?

セル範囲の大きさを変えること
Point:Resize
が欲しいのは「終端インデックス」ではなく要素数
UBound - LBound + 1
を列数にしてResize(1, colCount)
に渡す- 0始まり/1始まりどちらでも自動で正しく要素数が出る
1次元配列×
Resize(1, n)
Always pass “element count” (not an index) to Resize
, computed as UBound - LBound + 1
.Resize
には“要素数”を渡す
Vocabulary
| Lower Bound|下限 |
| Upper Bound|上限 |
| Element Count|要素数 |
| Horizontal Paste|横方向貼り付け |
| Resize|リサイズ |
その他の貼り付け
縦方向の場合
二次元配列の場合

同じ処理をPythonでも書いてみよう
2022-12-04
編集後記:
この記事の内容がベストではないかもしれません。
記事一覧
-
[VBA]Vertical Paste1D array 【VBA】一次元配列を縦方向にシートに貼り付け【範囲をリサイズする】 -
Let と Getで読み取り専用 【VBA】クラスのプロパティを読み取り専用にするLet と Getの書き方 -
[VBA]終了のメッセージボックス 【VBA】マクロ終了時のメッセージ|タイム付きmsgbox -
[VBA]extract the filenamefrom a full path 【VBA】フルパスからファイル名と拡張子を取得する|fso.GetFileName/GetBaseName/GetExtensionName -
[VBA]Transpose2D Array 【VBA】配列の縦横変換|WorksheetFunction.Transpose は使わない -
dictionaryをセットする 【VBA】Dictionaryのセット|CreateObject(“Scripting.Dictionary”)