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