忍者ブログ

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

PR
Comment
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字