第9講 プロシージャの学習
第9話 1ブロック数独を実現するプログラム
を実現するプログラム例
Private Sub CommandButton1_Click()
Dim n As Byte
n = Cells(5, 3)
f (n)
End Sub
Sub f(n As Byte)
Dim i As Byte, j As Byte, k As Byte, a(5, 5) As Byte
For i = 0 To n - 1
For j = 0 To n - 1
a(i, j) = Int(n * Rnd) + 1
h = 1
If j > 0 Then
For k = 0 To j - 1
If a(i, k) = a(i, j) Then
j = j - 1
h = 0
End If
Next
End If
If h = 1 Then
If i > 0 Then
For k = 0 To i - 1
If a(k, j) = a(i, j) Then
i = i - 1
h = 0
End If
Next
End If
End If
Next
Next
For i = 0 To n - 1
For j = 0 To n - 1
Cells(7 + i, 3 + j) = a(i, j)
Next
Next
End Sub
Private Sub CommandButton2_Click()
Rows("6:200").Select
Selection.ClearContents
Range("A1").Select
End Sub
参考ファイル
ところで、コードを次のように変更したらどうなるでしょうか。
Private Sub CommandButton1_Click()
Dim n As Byte
n = Cells(5, 3)
f (n)
End Sub
Sub f(m As Byte)
Dim i As Byte, j As Byte, k As Byte, a(5, 5) As Byte
For i = 0 To m - 1
For j = 0 To m - 1
a(i, j) = Int(m * Rnd) + 1
h = 1
If j > 0 Then
For k = 0 To j - 1
If a(i, k) = a(i, j) Then
j = j - 1
h = 0
End If
Next
End If
If h = 1 Then
If i > 0 Then
For k = 0 To i - 1
If a(k, j) = a(i, j) Then
i = i - 1
h = 0
End If
Next
End If
End If
Next
Next
For i = 0 To m - 1
For j = 0 To m - 1
Cells(7 + i, 3 + j) = a(i, j)
Next
Next
End Sub
初心者のためのc++ vc++ c言語 入門 基礎から応用までへ
初心者のための excel 2007 2010 2013 vba マクロ 入門 基礎から応用まで
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
vb講義トップへ
VB講義基礎へ
専門用語なしのC++入門へ
専門用語なしのJava入門へ
専門用語なしのVBA入門
数独のページ
魔方陣のページ
数学研究室に戻る
本サイトトップへ