|
|
|
Option Explicit
'配列のソート
Private Sub ExSort(sary() As String)
Dim i As Long
Dim j As Long
Dim h As Long
Dim temp As String
'交換処理の間隔を決める
h = LBound(sary())
For i = 1 To UBound(sary()) - 1
h = h * 3 + 1
Next
Do
h = h / 3
For i = h + LBound(sary()) To UBound(sary())
temp = sary(i)
j = i
'交換
Do While sary(j - h) > temp
sary(j) = sary(j - h)
j = j - h
If j < h Then
Exit Do
End If
Loop
sary(j) = temp
Next
Loop Until h = LBound(sary())
End Sub
Private Sub CommandButton1_Click()
Dim jyuutaku(4) As String
Dim i As Integer
jyuutaku(0) = "3:床"
jyuutaku(1) = "1:天井"
jyuutaku(2) = "4:玄関"
jyuutaku(3) = "2:窓"
jyuutaku(4) = "5:水まわり"
'ソート前の表示
For i = 0 To UBound(jyuutaku)
Cells(7 + i, 2) = jyuutaku(i)
Next
ExSort jyuutaku
'ソート結果の表示
For i = 0 To UBound(jyuutaku)
Cells(7 + i, 4) = jyuutaku(i)
Next
End Sub
|
|