【VBA】配列のソートをArrayListで行う方法(.NET)
今回はArrayListを使って配列のソートを行う方法について解説します。
VBAには配列をソートするメソッドなどが無いのですが、ArrayList(.NETのライブラリ)を参照すればソートを行うことができます。
配列のソートをArrayListで行う方法
Function ArrSort(arr) As Variant
'''arrをArrayListでSortして返す
'.NET FrameworkのArrayListオブジェクトを生成
With CreateObject("System.Collections.ArrayList")
'ArrayListに要素を追加
Dim one
For Each one In arr
.Add one
Next
.Sort
'ArrayListの中身を配列へ変換
ArrSort = .ToArray
End With
End Function
このコードは受け取った配列arrを、ArrayListでソートして返す自作関数です。
汎用的な関数にしているので、コピペしてそのまま使ってください。
'ArrayListに要素を追加
Dim one
For Each one In arr
.Add one
Next
中身の説明をすると、この部分で引数arrの各要素をAddメソッドでArrayListに入れています。
.Sort
'ArrayListの中身を配列へ変換
ArrSort = .ToArray
その後、Sortメソッドでソートを実行し、最後にToArrayメソッドによって配列に変換しています。
Sub Sample()
Dim arrBefore, arrAfter
arrBefore = Array(5, 2, 4, 6, 103, 329, 13)
arrAfter = ArrSort(arr)
Dim one
For Each one In arr
Debug.Print one
Next
End Sub
参考に使う方のサンプルコードも紹介します。
このようにArrSortプロシージャに配列を渡すと、ソートされた配列を受け取ることができます。
「メモリが不足しています。」エラーについて
使用PCによってこのエラーが発生することがあります。下記記事に対策をまとめたのでこちらも確認ください。