配列内に代入されているそれぞれの値を比較して昇順に並べ替える、汎用的なプロシージャのサンプルです。
次の「BubbleSortArray」プロシージャでは、引数varArrayで与えられた配列の中身を昇順に並べ替え、結果をその引数として返します。
引数がByRefで宣言されていますので、呼び出し元で与えた配列そのものが並べ替えられてしまうことに注意してください。
Public Sub BubbleSortArray(ByRef varArray As Variant)
'概要 : バブルソートを使って配列の要素を昇順に並べ替える
'引数 varArray : 並べ替えたい配列
'返り値 : 並べ替え後の配列をそのまま引数として返す
Dim iLoop As Integer
Dim jLoop As Integer
Dim varTemp As Variant
'配列の各要素全体のループ
For iLoop = 0 To UBound(varArray)
'ひとつの要素と他の要素を比較するループ
For jLoop = iLoop + 1 To UBound(varArray)
If varArray(iLoop) > varArray(jLoop) Then
'他の要素の方が小さかったら配列の中身を入れ替える
varTemp = varArray(iLoop)
varArray(iLoop) = varArray(jLoop)
varArray(jLoop) = varTemp
End If
Next jLoop
Next iLoop
End Sub
使用例:
Sub test()
Dim varArrayTest As Variant
Dim iLoop As Integer
'テストデータを配列に代入
varArrayTest = Array(9, 1, 4, 2, 3, 5, 8, 7, 6)
'元のデータをイミディエイトウィンドウに出力
Debug.Print "元のデータ"
For iLoop = 0 To UBound(varArrayTest)
Debug.Print varArrayTest(iLoop),
Next iLoop
Debug.Print
'並べ替えを実行
BubbleSortArray varArrayTest
'並べ替え後のデータをイミディエイトウィンドウに出力
Debug.Print "並べ替え後のデータ"
For iLoop = 0 To UBound(varArrayTest)
Debug.Print varArrayTest(iLoop),
Next iLoop
End Sub
実行結果:

また、文字をテストデータにした場合には、次のようになります。
varArrayTest = Array("き", "お", "え", "う", "い", "あ", "か")
実行結果:

|