変数 変数だけでソート(並び替え)昇順降順

※より実装に近く表示させる為、コードの改行を避けています。スマホ等で閲覧される際は向きを変えてご覧ください。

※実装するバージョンによってはバージョンアップの仕様により動作しないコードもあります。実装には動作確認の上ご使用下さい。

Option Explicit


Private Sub test()
'*************************************
'変数だけでソート(並び替え)昇順降順
'*************************************

Dim i As Byte, str As String
Dim testData() As Long
ReDim testData(10) As Long
testData(1) = 3
testData(2) = 7
testData(3) = 1
testData(4) = 9
testData(5) = 2
testData(6) = 5
testData(7) = 8
testData(8) = 4
testData(9) = 6
testData(10) = 0

VariableSortAsc testData
str = ""
For i = 1 To 10
str = str & i & vbTab & testData(i) & vbCr
Next i
MsgBox str

ReDim testData(10) As Long

testData(1) = 3
testData(2) = 7
testData(3) = 1
testData(4) = 9
testData(5) = 2
testData(6) = 5
testData(7) = 8
testData(8) = 4
testData(9) = 6
testData(10) = 0

VariableSortDes testData
str = ""
For i = 1 To 10
str = str & i & vbTab & testData(i) & vbCr
Next i
MsgBox str
End Sub


Sub VariableSortAsc(lngData As Variant)
'*************************************
'変数だけでソート(並び替え)昇順
'*************************************
'Ascending order 昇順
'1次元用
Dim MainSort As Long
Dim SubSort As Long
Dim lngChange As Long

    For MainSort = LBound(lngData) To UBound(lngData)
        For SubSort = UBound(lngData) To MainSort Step -1
            If lngData(MainSort) > lngData(SubSort) Then
                lngChange = lngData(MainSort)
                lngData(MainSort) = lngData(SubSort)
                lngData(SubSort) = lngChange
            End If
        Next SubSort
    Next MainSort

End Sub


Sub VariableSortDes(lngData As Variant)
'*************************************
'変数だけでソート(並び替え)降順
'*************************************
'Descending order 降順
'1次元用
Dim MainSort As Long
Dim SubSort As Long
Dim lngChange As Long

    For SubSort = UBound(lngData) To MainSort Step -1
        For MainSort = LBound(lngData) To UBound(lngData)
                If lngData(MainSort) < lngData(SubSort) Then
                    lngChange = lngData(MainSort)
                    lngData(MainSort) = lngData(SubSort)
                    lngData(SubSort) = lngChange
                End If
        Next MainSort
    Next SubSort

End Sub

 

 

 

2000年01月01日|[VBサンプルコード]:[変数]