【VBA】エクセルVBAで勤怠管理を作成したい

プログラミング

こんにちは。

今回は、エクセルVBAで簡単な勤怠管理を行える仕組みを作って見ました。これをさらに応用すれば、その日に行ったことを記録する日報としても使用できると思います。ぜひ確認して見てください。

Sub datainput()

Dim LASTROW As Long
    ' 最終行の取得
   LASTROW = Cells(Rows.Count, 2).End(xlUp).Row + 1
    
    If Cells(LASTROW - 1, 3).Value = "" Then

        Cells(LASTROW - 1, 3) = Format(Time, "hh:mm")
        Cells(LASTROW - 1, 5) = DateDiff("n", Cells(LASTROW - 1, 2).Value, Cells(LASTROW - 1, 3).Value)

        Cells(LASTROW - 1, 4) = Cells(LASTROW - 1, 5) - Cells(4, 8)
        Cells(LASTROW - 1, 6) = Cells(LASTROW - 1, 4) - Cells(7, 8)
    Else
        Cells(LASTROW, 1).Value = Format(Date, " yyyy/mm/dd")
        Cells(LASTROW, 2).Value = Format(Time, "hh:mm")
    End If
End Sub
 

上記のコードをVBAに記入し、勤怠ボタン(図形で作成して)にVBAのdatainputを登録することで、使用することができます。

休憩時間をセルH4、定常時間をセルH7に入力してください。

ここからコードの説明します。

Dim LASTROW As Long ‘ 最終行の取得

LASTROW = Cells(Rows.Count, 2).End(xlUp).Row + 1
LASTROWで開始時刻の最終行から1つ下の行を取得しています。
次に、終了時刻が入力されているかをIF文でわけています。
If Cells(LASTROW – 1, 3).Value = “” は、開始時刻が入力されている最終行の隣が空欄ならば
その下のコードが実行されます。
Format(Time, “hh:mm”) は、現在の時刻が(例20:34)表示される。
DateDiff(“n”, Cells(LASTROW – 1, 2).Value, Cells(LASTROW – 1, 3).Value) は、分表示で、終了時間から開始時刻が引いた時間が表示される。
次に、Elseで開始時刻と終了時刻が揃っている時は、最終行に当日の日付と現在の時刻が表示される。

コメント

タイトルとURLをコピーしました