このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

【VBA】配列のソートをArrayListで行う方法(.NET)

2024年8月19日

今回はArrayListを使って配列のソートを行う方法について解説します。

VBAには配列をソートするメソッドなどが無いのですが、ArrayList(.NETのライブラリ)を参照すればソートを行うことができます。

VBAが難しいと感じたら
ココナラにてVBAの作成依頼を受け付けています。
ご依頼・ご相談はこちらから

配列のソートを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によってこのエラーが発生することがあります。下記記事に対策をまとめたのでこちらも確認ください。

《VBA上級者になりたい人へ》
VBA上級者を目指したい人にはパーフェクトExcel VBA一択です。
この本を読み切れば間違いなくVBA上級者になれます。

VBAが難しいと感じたら
ココナラにてVBAの作成依頼を受け付けています。
ご依頼・ご相談はこちらから

VBA

Posted by やろまい