第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次元ループになり、
頭が混乱しますが、
粘り強く試行錯誤で取り組んでください。




14話へ 第16話へ


トップ

初心者のためのc++ vc++ c言語 入門 基礎から応用までへ
初心者のための excel 2007 2010 2013 vba マクロ 入門 基礎から応用まで
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
vb講義トップへ
VB講義基礎へ
専門用語なしのC++入門へ
専門用語なしのJava入門へ
専門用語なしのVBA入門

数独のページ
魔方陣のページ
数学研究室に戻る
本サイトトップへ