第7講 結果を報告しない社員

第8話 社員が他の社員に仕事を依頼する
Private Sub CommandButton1_Click()
  wa
End Sub
Private Sub CommandButton2_Click()
  Rows("6:200").Select
  Selection.ClearContents
  Cells(1, 1).Select
End Sub
Sub wa()
  Dim w As Long, i As Byte
  w = 0
  For i = 1 To 10
    w = w + i
  Next
  Cells(6, 1) = "1から10までの和"
  Cells(6, 3) = w
  
seki
End Sub
Sub seki()
  Dim w As Long, i As Byte
  w = 1
  For i = 1 To 10
    w = w * i
  Next
  Cells(7, 1) = "1から10までの積"
  Cells(7, 3) = w
End Sub
の実行結果
2013

結果は全く変わりません。
社員が他の社員に仕事を命じることができる!
というより、社員が他の社員に仕事をお願い(依頼)することができるのです。
社員同士は上下関係でなく対等であるからです。
(第10講の主題になりますが、実は社員は自分にも仕事を依頼することもできます。
えっ!?、自分に仕事を依頼するですって?
?????
不思議な話ですよね。
どういうことがお知りになりたいでしょうが、
第10講までお待ちください。
どうしても待てない方は、
初心者のための vba excel 2007 2010 2013 マクロ 入門 基礎から応用まで

をお読みください。)

では、練習しましょう。前に作ったプログラム(参考ダウンロードファイル
Private Sub CommandButton1_Click()
  
Cells(6, 2) = "出席番号"
  Cells(6, 3) = "国語"
  Cells(6, 4) = "社会"
  Cells(6, 5) = "数学"
  Cells(6, 6) = "理科"
  Cells(6, 7) = "英語"
  Cells(6, 8) = "合計"
  Cells(6, 9) = "平均"
  Cells(6, 10) = "評価"
  Cells(6, 11) = "3段階評価"
  Cells(6, 12) = "4段階評価"
  Cells(6, 13) = "5段階評価"

  
Dim i As Byte, j As Byte, w As Integer
  For i = 0 To 39
    Cells(7 + i, 2) = i + 1
    For j = 0 To 4
      Cells(7 + i, 3 + j) = Int(100 * Rnd())
    Next
  Next

  
For i = 0 To 4
    w = 0
    For j = 0 To 39
      w = w + Cells(7 + j, 3 + i)
    Next
    Cells(47, 3 + i) = w
    Cells(48, 3 + i) = w / 40
    If w / 10 >= 50 Then
      Cells(49, 3 + i) = "合格"
    Else
      Cells(49, 3 + i) = "不合格"
    End If
  Next

  For i = 0 To 39
    w = 0
    For j = 0 To 4
      w = w + Cells(7 + i, 3 + j)
    Next
    Cells(7 + i, 8) = w
    Cells(7 + i, 9) = w / 5
    If w / 5 >= 50 Then
      Cells(7 + i, 10) = "合格"
    Else
      Cells(7 + i, 10) = "不合格"
    End If
    If w / 5 >= 55 Then
      Cells(7 + i, 11) = "優秀"
    Else
      If w / 5 >= 50 Then
        Cells(7 + i, 11) = "普通"
      Else
        Cells(7 + i, 11) = "努力が必要"
      End If
    End If
    If w / 5 >= 60 Then
      Cells(7 + i, 12) = "天才級"
    Else
      If w / 5 >= 55 Then
        Cells(7 + i, 12) = "秀才級"
      Else
        If w / 5 >= 50 Then
          Cells(7 + i, 12) = "平凡"
        Else
          Cells(7 + i, 12) = "不出来"
        End If
      End If
    End If
    If w / 5 >= 65 Then
      Cells(7 + i, 13) = "神"
    Else
      If w / 5 >= 60 Then
        Cells(7 + i, 13) = "准超越者"
      Else
        If w / 5 >= 55 Then
          Cells(7 + i, 13) = "人間"
        Else
          If w / 5 >= 45 Then
            Cells(7 + i, 13) = "人造人間ベム・ベロ・ベラ級"
          Else
            Cells(7 + i, 13) = "ピノキオ以下の存在"
          End If
        End If
      End If
    End If
  Next

  
  
w = 0
  For i = 1 To 10
    w = w + Cells(6 + i, 8)
  Next
  Cells(47, 8) = w
  Cells(48, 8) = w / 40
  Dim v As Single
  v = 0
  For i = 1 To 39
    v = v + Cells(6 + i, 9)
  Next
  Cells(47, 9) = v
  Cells(48, 9) = v / 10
  Cells(47, 2) = "合計"
  Cells(48, 2) = "平均"
  Cells(49, 2) = "評価"

End Sub

Subプロシージャ(社員)を使って
Private Sub CommandButton1_Click()
  
表題を表示するという仕事をAさんに依頼
  
出席番号とデータを発生させる仕事をBさんに依頼
  
各生徒の合計・平均・評価算出の仕事をCさんに依頼
  
各教科の合計・平均・評価算出の仕事をDさんに依頼
  
合計の合計・平均の算出やその他の仕事をEさんに依頼
End Sub
見通しの良いプログラムに変更してください。




第7話へ 第9話へ

トップ

vc++講義へ

初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
vb講義へ
VB講義基礎へ
初心者のためのJava 入門 基礎から応用まで
数学研究室に戻る