銀河鉄道

【VBA】一次元配列を横方向にシートに貼り付け【範囲をリサイズする】

サムネイル
[VBA]Horizontal Paste1D array
一次元配列を
「横一行」に
貼りたい

セル範囲をリサイズして一次元配列を貼り付ける

' 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でも書いてみよう

著者

author
月うさぎ

編集後記:
この記事の内容がベストではないかもしれません。

記事一覧