パーツ化とは
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関数】



コメント