配列の使い方

VB6/VBAでは配列はよく使います。基本的な使い方とクイックソートを使った配列の並び替え(ソート)を掲載します。

  • 配列の使い方(宣言、要素数設定、繰り返し)
Dim i As Integer
Dim strList() As String

'初期要素数を設定
ReDim strList(1)

'対象添え字に値を編集
strList(0) = "AAA"
strList(1) = "BBB"

'要素情報を維持した状態で、配列最大要素数を変更する場合
ReDim Preserve strList(9)

'対象添え字に値を編集
strList(2) = "CCC"

'配列の要素数(10回)分、繰り返し(ループ)
For i = 0 To UBound(strList)
    '対象文字を出力
    Debug.Print strList(i)
Next
  • 配列の使い方(ソート)
Dim i As Integer
Dim strList(1) As String

'要素を設定
strList(0) = "B"
strList(1) = "A"
 
'クイックソートで配列を並び替え
Call QSort(strList, LBound(strList), UBound(strList))

'並び替え結果
For i = 0 To UBound(strList)
    '対象文字を出力
    Debug.Print strList(i)
Next
'クイックソート処理
Sub QSort(ByRef list As Variant, ByVal min As Long, ByVal max As Long)

    Dim l As Long
    Dim r As Long
    l = min
    r = max

    Dim work As Variant
    work = list((min + max) \ 2)

    Dim val As Variant
    
    Do While (l <= r)
        Do While (list(l) < work And l < max)
            l = l + 1
        Loop
        Do While (work < list(r) And r > min)
            r = r - 1
        Loop
    
        If (l <= r) Then
            val = list(l)
            list(l) = list(r)
            list(r) = val
            l = l + 1
            r = r - 1
        End If
    Loop
    
    If (min < r) Then

        Call QSort(list, min, r)
    End If
    If (l < max) Then

        Call QSort(list, l, max)
    End If
End Sub

※VB6/VBAには配列のソートを自動的に行ってくれるものがない為、上記のようにクイックソートやバブルソートを自前で作って行っています。これ以外にリストボックスを使って並び替えを行わせる方法もありますが、コードのみで完結できる上記の方法をとっています。