VBA講座 レッスン1 時間の計算と串刺し計算

アルバイト勤務表


  • コマンドボタンではなく「Worksheet_Change」を使用します。
  • 書き込むごとに計算されます。
それではこのシートをVBAで操作出来るようにプログラムを書いてみましょう。
森山・井上・杉島シートにコピーします。

Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next nrow = Target.Row ncol = Target.Column If ncol = 3 Then Exit Sub If nrow < 7 Or nrow > 13 Then Exit Sub kei = 0: n = 0 Application.EnableEvents = False For i = 7 To 13 Cells(i, 5) = (Cells(i, 4) - Cells(i, 2)) * 24 If Cells(i, 2) = "" Or Cells(i, 4) = "" Then Cells(i, 5) = 0 Cells(i, 6) = Cells(i, 5) * Cells(6, 9) kei = kei + Cells(i, 6) If Cells(i, 5) <> 0 Then n = n + 1 End If Next i Cells(14, 6) = kei Cells(7, 9) = n Application.EnableEvents = True End Sub

では次に合計シートの集計をシートを開いた時に発生するイベントプロシージャ Worksheet_Activate()に書き込みます。

Private Sub Worksheet_Activate() Dim WB As Workbook Dim WS1 As Worksheet Set WB = ActiveWorkbook Row = 7 col = 6 wsRow = 4 wsCol = 3 For i = 1 To 7 gokei = 0 countN = 0 For j = 1 To 3 Set WS1 = WB.Worksheets(j) kei = WS1.Cells(Row, col) If kei <> 0 Then countN = countN + 1 gokei = gokei + kei Next j Row = Row + 1 Cells(wsRow, wsCol) = gokei Cells(wsRow, 2) = countN wsRow = wsRow + 1 Next i gokei = 0: kei = 0: countN = 0 For i = 4 To wsRow - 1 kei = Cells(i, wsCol) countN = countN + Cells(i, 2) gokei = gokei + kei Next i Cells(wsRow + 1, wsCol) = gokei Cells(wsRow + 1, 2) = countN End Sub


  • ここで問題です。
  • もう1名増やしてみましょう。
  • がんばってね( ^)o(^ )

Excel関数で計算、3つのシートを合計する計算式も覚えられるよ


中級レッスン1 ダウンロードはこちら