第6講 If文(分岐)を理解しよう

第5話 合格・不合格判定プログラム

前話問題
f
1教科でも50未満なら、
g
解答例
Private Sub CommandButton1_Click()
  Dim i As Byte, h As Byte
  h = 1
  For i = 0 To 4
    Cells(6, 2 + i) = Int(100 * Rnd())
  Next
  For i = 0 To 4
    If Cells(6, 2 + i) < 50 Then h = 0
  Next
  If h = 1 Then Cells(8, 2) = "合格" Else Cells(8, 2) = "不合格"
End Sub
Private Sub CommandButton2_Click()
  Range("B6:F6,B8").Select
  Selection.ClearContents
  Range("A1").Select
End Sub

参考ファイル

解説
  Dim i As Byte, h As Byte
  h = 1
最初hには1が代入されていました。
  For i = 0 To 4
    If Cells(6, 2 + i) < 50 Then h = 0
  Next
によって、1個でも50未満のセルがあると、
hは0に置き換わります。
すべて50以上ならhは1のままで書き換わることはありません。
ですから、
  If h = 1 Then Cells(8, 2) = "合格" Else Cells(8, 2) = "不合格"
によって、
1教科でも50未満があれば不合格
すべて50以上なら合格とB8に表示されるわけです。
    If Cells(6, 2 + i) < 50 Then h = 0

    If h =1 then If Cells(6, 2 + i) < 50 Then h = 0
としても良いですね。
hが0になっているときは不合格確定ですから、
If Cells(6, 2 + i) < 50 Then h = 0の判定は不要ですから。
処理速度を上げる・・・
将来、数独自動生成ソフトを開発するときに絶対に必要な姿勢です。


では皆さん、今回の課題をヒントに第5講第11話のプログラム
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(7 + i, 1 + i)
  Next
  Cells(14, 3) = "右下がり対角線合計 "
  Cells(14, 6) = w
  w = 0
  For i = 0 To 5
    w = w + Cells(7 + i, 6 - i)
  Next
  Cells(15, 3) = "右上がり対角線合計 "
  Cells(15, 6) = w
End Sub
魔方陣判定
を改良して、
c
が実現できるようにしましょう。




4話へ 第6話へ


トップ


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

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