パーツ化とは
ExcelVBAマクロ初級者からの脱却が、処理のパーツ化(プロシージャの分割)と考えています。
マクロを作る上で基本機能をパーツ化する事で、開発時間の削減に繋がります。
処理はパーツ単位で分ける事を心掛けましょう。
分かりやすく説明すると、エクセルの「関数」と同様です。
SUM関数であれば セル内に「=SUM(1+2+3)」と記載すれば、セルには「6」と表示されますよね。
値を渡せば正しい値で返ってくる動きです。
このコードをコピペでOK
'■配列を逆順に並び替えする Public Function Call_ArrayReverse(ByRef arr As Variant) Dim temp() As Variant Dim sStart As Long Dim sEnd As Long Dim i As Long Dim cnt As Long sStart = LBound(arr) sEnd = UBound(arr) '■一時的な配列を作成 ReDim Preserve temp(sStart To sEnd) cnt = (sEnd - sStart) + 1 '■arr→tempへ逆順でデータを渡す For i = 0 To cnt - 1 temp(sStart + i) = arr(sEnd - i) Next '■temp→arrへ正順でデータを渡す '■=arrが逆順になる For i = 0 To cnt - 1 arr(sStart + i) = temp(sStart + i) Next End Function
使い方
上記をコピペでお好きなモジュール内に記載してください。
Public Sub test() Dim arr As Variant arr = Array(5, 1, 2) Call Call_ArrayReverse(arr) '■配列が以下のようにソートされる '2 1 5 End Sub
注意点
- 昇順のデータは、降順に並び替えします。
- 配列を昇順にしたい場合は、以下の記事を参照してください。
一次元配列を並び替え(ソート)する【クイックソート】【ExcelVBA】 - 昇順に並んでいないデータの場合は、配列の順序を逆にします。
上記コードは二次元配列では処理できません。二次元配列の場合は以下参照してください。
「二次元配列で任意の列をキーにソート(並び替え)」をパーツ化する【ExcelVBA】
関連記事
指定した要素で配列を作成【Array関数】【ExcelVBA】
一次元/二次元配列の要素数の最小値を取得する【Lbound関数】
一次元/二次元配列の要素数の最大値を取得する【Ubound関数】
コメント