worksheetfunctionの弊害 配列をエクセルシートに転記するマクロ
2020年05月09日
VBAで、1次元配列をエクセルに転記するときに、
配列を転置しないとうまく貼れない。
ネットで拾った以下のソースを使っていたんだけど、
配列の要素数が多いとうまく動作しないことが判明。
配列を転置しないとうまく貼れない。
ネットで拾った以下のソースを使っていたんだけど、
配列の要素数が多いとうまく動作しないことが判明。
手動で転置することにしました。
修正前
Private Sub ArrayToCell_1d_trns(Target As Range, oArr) '配列貼り付け便利モジュール
Dim iRowMax: iRowMax = UBound(oArr, 1) - LBound(oArr, 1) + 1
Dim iColMax: iColMax = 1 '1列データは転置が必要
Target.Resize(iRowMax, iColMax).Value = WorksheetFunction.Transpose(oArr) 'サイズでかいとダメポ
End Sub
修正後
修正後
Private Sub ArrayToCell_1d_trns2(Target As Range, oArr) '配列貼り付け便利モジュール
Dim iRowMax: iRowMax = UBound(oArr, 1) - LBound(oArr, 1) + 1
Dim iColMax: iColMax = 1 '1列データは転置が必要
Dim bufArr(), k As Long
ReDim bufArr(UBound(oArr, 1), 0)
For k = LBound(oArr, 1) To UBound(oArr, 1)
bufArr(k, 0) = oArr(k)
Next k
Target.Resize(iRowMax, iColMax).Value = bufArr
End Sub
参考ページ
インストラクターのネタ帳
https://www.relief.jp/docs/excel-vba-array-transpose.html
思いっきり「要素数は65536まで」って書いてあったw
参考ページ
インストラクターのネタ帳
https://www.relief.jp/docs/excel-vba-array-transpose.html
思いっきり「要素数は65536まで」って書いてあったw
PR
Comment