[プログラミング: VBA] Transpose関数を自分で作ってみた
ども、こんにちは (ミ 'ω')ノ
別の記事で、Traspose関数には要素数の制限があり、環境によって使える要素数が変わるようだったので、今回は自分で作ってみました。
それと WorksheetFunction.Transpose()と記述するとおり、Access VBAや他のOffice VBAからは使えないため、アホみたい配列を使う人には便利だと思います。
< 作成したコード >
'***** 配列の行と列の要素を入れ替える(Transpoose関数の代替え)
' 引数1 : rfArray / 入れ替え対象の変数
' 戻り値 : [Boolean] / True:入れ替え成功, False:入れ替え失敗
Function myTranspose(ByRef rfArray As Variant) As Boolean
'===== 変数宣言 =====================================================
Dim i As Long, j As Long
Dim varTmp As Variant
'==================================================================
myTranspose = False
On Error GoTo ErrLine:
varTmp = rfArray
ReDim rfArray(LBound(varTmp, 2) To UBound(varTmp, 2), _
LBound(varTmp) To UBound(varTmp))
For i = LBound(rfArray) To UBound(rfArray)
For j = LBound(rfArray, 2) To UBound(rfArray, 2)
rfArray(i, j) = varTmp(j, i)
Next
Next
'戻り値を返す
myTranspose = True
ErrLine:
End Function
自作すると言っても配列の行と列を入れ替えするだけです。
また、このコードには書いていませんが、実装する場合は渡された変数(配列)が2次元配列かどうかをチェックしてから走らせた方が良いかもしれません。
<使い方>
[戻り値: Boolean] = myTranspose([変数])
戻り値:
True = 入れ替え成功
False = 受け取った配列が2次元配列ではない
または、入れ替え中に意図しないエラーが発生した
記事を最後まで読んでいただきありがとうございました!
記事の内容が良ければ ”スキ” をしてもらえると禿げ上がるくらい嬉しいです。
どうぞよろしくお願いします!
それじゃ (ミ 'ω')ノ
この記事が気に入ったらサポートをしてみませんか?