第6講 If文(分岐)を理解しよう
第15話 数独の列と行の部分を1次元For文によって2次元ループする方法による改良
数独の列・行部分の改良例
Private Sub CommandButton1_Click()
・
・
・
Dim v As Long, x As Long
x = CLng(1) * CLng(2) * CLng(3) * CLng(4) * CLng(5) * CLng(6) * CLng(7) * CLng(8) * CLng(9) '毎回計算させないようにするため
v = 1
For i = 0 To 80
a = i Mod 9
s = Int(i / 9)
v = v * CLng(Cells(7 + a, 9 + s))
If a = 8 Then
If v = x Then Cells(16, 9 + s) = "○" Else Cells(16, 9 + s) = "×"
v = 1
End If
Next
v = 1
For i = 0 To 80
a = i Mod 9
s = Int(i / 9)
v = v * CLng(Cells(7 + s, 9 + a))
If a = 8 Then
If v = x Then Cells(7 + s, 18) = "○" Else Cells(16 + s, 18) = "×"
v = 1
End If
Next
・
・
・
End Sub
参考ファイル
次の課題です。
ブロックの判定を1回のFor文で済むようにしましょう。
ブロックについては、すでに2次元ループだったので、
4次元ループになり、
頭が混乱しますが、
粘り強く試行錯誤で取り組んでください。
初心者のためのc++ vc++ c言語 入門 基礎から応用までへ
初心者のための excel 2007 2010 2013 vba マクロ 入門 基礎から応用まで
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
vb講義トップへ
VB講義基礎へ
専門用語なしのC++入門へ
専門用語なしのJava入門へ
専門用語なしのVBA入門
数独のページ
魔方陣のページ
数学研究室に戻る
本サイトトップへ