第23講 数独を解くソフトVer.1の制作
第9話 並び替え(昇順・降順)解答例
ダウンロード用参考ファイル
前話課題解答例
降順(大きい順)の場合
Private Sub CommandButton1_Click()
Dim i As Byte
For i = 0 To 14
Cells(3, 5 + i) = Int(10 * Rnd)
Next
End Sub
Private Sub CommandButton2_Click()
Dim i As Byte, j As Byte, a(15) As Byte, max As Byte, jk As Byte, w As Byte
For i = 0 To 14
a(i) = Cells(3, 5 + i)
Next
For i = 0 To 14
max = 0
For j = i To 14
If a(j) > max Then
max = a(j)
jk = j
End If
Next
If jk > 0 Then
w = a(i)
a(i) = a(jk)
a(jk) = w
End If
Next
For i = 0 To 14
Cells(5, 5 + i) = a(i)
Next
End Sub
Private Sub CommandButton3_Click()
Range("E3:S5").Select
Selection.ClearContents
Range("A1").Select
End Sub
実行例
昇順(小さい順)の場合
Private Sub CommandButton1_Click()
Dim i As Byte
For i = 0 To 14
Cells(3, 5 + i) = Int(10 * Rnd)
Next
End Sub
Private Sub CommandButton2_Click()
Dim i As Byte, j As Byte, a(15) As Byte, min As Byte, jk As Byte, w As Byte
For i = 0 To 14
a(i) = Cells(3, 5 + i)
Next
For i = 0 To 14
min = 100
For j = i To 14
If a(j) < min Then
min = a(j)
jk = j
End If
Next
If jk > 0 Then
w = a(i)
a(i) = a(jk)
a(jk) = w
End If
Next
For i = 0 To 14
Cells(5, 5 + i) = a(i)
Next
End Sub
Private Sub CommandButton3_Click()
Range("E3:S5").Select
Selection.ClearContents
Range("A1").Select
End Sub
実行例
ダウンロード用参考ファイル
今回、for文の2次元ループで処理しましたが、
1次元目
For i = 0 To 14
の部分はSubプロシージャの再帰的使用で実現することもできます。
Subプロシージャの再帰的呼び出しによる場合は、
配列を利用する際にはグローバル配列にしておくとよいでしょう。
また、minとmaxも同様にグローバル変数にするとよいでしょう。
今度はそれを考えてください。
第8話へ 第10話へ
VBA講義第1部へ
vc++講義へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
数学研究室に戻る