【EXCEL_VBA】打刻機能付きタイムシートを作ろう<打刻用VBAを作る>

PCサポート

打刻用VBAを作る
シートの準備をしましょう
1:シート「タイムスタンプ」を作成しましょう。
2:シート「出勤データ」を作成しましょう。
3:シート「退勤データ」を作成しましょう。
4:シート「出勤データ」に下記を入力してください。
「A1」に「このシートは基本的には管理者以外は見えないように隠してください」と入力してください。
「B1」に「日付」と入力してください。
「B2」に「出勤」と入力してください。
5:シート「出勤データ」に下記を入力してください。
「A1」に「このシートは基本的には管理者以外は見えないように隠してください」と入力してください。
「B1」に「日付」と入力してください。
「B2」に「出勤」と入力してください。
以上でシートの作成は終了となります。

VBAの作成
出勤データ用のVBAを作成する。
シートタイムスタンプの「出勤」をクリックする。
1:「出勤データ」のシートに移動する。
2:最終行を取得する。
3:最終行の1つ上の行のB列に値があり、かつA列に前回記録した日付と異なる場合、最終行に日付と時刻を記録する。
4:「タイムスタンプ」のシートをアクティブにする。
5:ファイルを上書きセーブします。
6:「Excel」を終了する。

Sub 出勤()
Sheets(“出勤データ”).Select
Dim lastRow As Integer
lastRow = Cells(1, 1).End(xlDown).Row + 1
If Cells(lastRow – 1, “B”).Value <> “” And Cells(lastRow – 1, “A”).Value <> Date Then
Cells(lastRow, “A”).Value = Date
Cells(lastRow, “B”).Value = “‘” & Hour(Time) & “:” & Format(Minute(Time), “00”)
  End If
Sheets(“タイムスタンプ”).Select

ThisWorkbook.Save
Application.Quit

End Sub

退勤データ用のVBAを作成する。
シートタイムスタンプの「退勤」をクリックする。
1:「退勤データ」のシートに移動する。
2:最終行を取得する。
3:最終行の1つ上の行のB列に値があり、かつA列に前回記録した日付と異なる場合、最終行に日付と時刻を記録する。
4:「タイムスタンプ」のシートをアクティブにする。
5:ファイルを上書きセーブします。
6:「Excel」を終了する。

Sub 退勤()
Sheets(“退勤データ”).Select
Dim lastRow As Integer
lastRow = Cells(1, 1).End(xlDown).Row + 1
If Cells(lastRow – 1, “B”).Value <> “” And Cells(lastRow – 1, “A”).Value <> Date Then
Cells(lastRow, “A”).Value = Date
Cells(lastRow, “B”).Value = “‘” & Hour(Time) & “:” & Format(Minute(Time), “00”)
  End If
Sheets(“タイムスタンプ”).Select

ThisWorkbook.Save
Application.Quit

End Sub

簡単作成のヒント

「出勤」のVBAが完成したら「退勤」のVBAはコピペして「出勤→退勤」に変更だけでOK
このページのVBAをコピペでもOK

あとはタイムシートに出来上がったVBAと組み合わせるだけです。
参考
フォームの作成


使用マニュアル
https://sakai-city.biz/archives/2188

タイムスタンプ例

スポンサーリンク

コメント

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