第5講 For文(繰り返し処理)を理解しよう

第10話 列・行合計プログラミング解答例


前話問題解答例
Private Sub CommandButton1_Click()
  Dim w As Byte, i As Byte
  w = 0
  For i = 0 To 5
    w = w + Cells(7 + i, 1)
  Next
  Cells(13, 1) = w
  w = 0
  For i = 0 To 5
    w = w + Cells(7 + i, 2)
  Next
  Cells(13, 2) = w
  w = 0
  For i = 0 To 5
    w = w + Cells(7 + i, 3)
  Next
  Cells(13, 3) = w
  w = 0
  For i = 0 To 5
    w = w + Cells(7 + i, 4)
  Next
  Cells(13, 4) = w
  w = 0
  For i = 0 To 5
    w = w + Cells(7 + i, 5)
  Next
  Cells(13, 5) = w
  w = 0
  For i = 0 To 5
    w = w + Cells(7 + i, 6)
  Next
  Cells(13, 6) = w
  w = 0
  For i = 0 To 5
    w = w + Cells(7, 1 + i)
  Next
  Cells(7, 7) = w
 w = 0
  For i = 0 To 5
    w = w + Cells(8, 1 + i)
  Next
  Cells(8, 7) = w
  w = 0
  For i = 0 To 5
    w = w + Cells(9, 1 + i)
  Next
  Cells(9, 7) = w
  w = 0
  For i = 0 To 5
    w = w + Cells(10, 1 + i)
  Next
  Cells(10, 7) = w
  w = 0
  For i = 0 To 5
    w = w + Cells(11, 1 + i)
  Next
  Cells(11, 7) = w
  w = 0
  For i = 0 To 5
    w = w + Cells(12, 1 + i)
  Next
  Cells(12, 7) = w
End Sub
列合計
上のプログラムは、もちろん良いプログラムとはいえません。
理由はお分かりですね。
同じことをなんかも繰り返しているからです。
もちろん、これを解消する方法はあります。
その方法は、For文を入れ子式に2回使う方法です。
入れ子式に2回使う方法を2次元ループといいます。
2次元ループは後の講の課題ですので、
しばらくは、このできの悪いコードで我慢するしかありません。
Private Sub CommandButton2_Click()
  Range("A13:F13").Select
  Selection.ClearContents
  Range("G7:G12").Select
  Selection.ClearContents
  Range("A1").Select
End Sub
魔方陣

参考ファイル

列合計
すべての列とすべての行の合計が111でした。
この方陣は魔方陣の可能性が高いことが分かりました。
さて、対角線合計はどうでしょうか。

コードを改良して、実行ボタンを押すと
行合計
消去ボタンを押すと
魔方陣
と元に戻るようにしましょう。
参考ファイルは、文字や数字の配置が中央揃えになっているので、
『右下がり対角線合計』の表示の位置を工夫してください。
尚、右上がり対角線合計は難問ですので、
ヒントを一つだけ。
それはCellsにおいて引き算を使うということです。

9話へ 第11話へ


トップ

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

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