急に、そういえばこんなの作ったな~というのを思い出したので、
10年後くらいの自分が見て懐かしめるように、記憶を頼りに再現してみました。
マクロを書いたきっかけ
・初めて参画したPJで、ある事象が発生した際に時間を記録する必要があった
・参画時は、全員が時間を手書きでメモってた
→事象が多発した時大変だし、絶対手じゃない方がいいよね?と思い、書いてみよう!となりました。
作ったもの
たしかコードはこんな感じだった気がする...
Sub SetTime()
Dim currentTime As Double
Dim LastRow As Long
currentTime = Time ' 現在の時間を取得
HH = Format(currentTime, "HH:00")
Select Case HH
Case "9:00"
LastRow = Cells(Rows.Count, 2).End(xlUp).Row
Cells(LastRow + 1, 2).Value = Format(currentTime, "HH:MM:SS")
Case "10:00"
LastRow = Cells(Rows.Count, 3).End(xlUp).Row
Cells(LastRow + 1, 3).Value = Format(currentTime, "HH:MM:SS")
Case "11:00"
LastRow = Cells(Rows.Count, 4).End(xlUp).Row
Cells(LastRow + 1, 4).Value = Format(currentTime, "HH:MM:SS")
Case "12:00"
LastRow = Cells(Rows.Count, 5).End(xlUp).Row
Cells(LastRow + 1, 5).Value = Format(currentTime, "HH:MM:SS")
Case "13:00"
LastRow = Cells(Rows.Count, 6).End(xlUp).Row
Cells(LastRow + 1, 6).Value = Format(currentTime, "HH:MM:SS")
Case "14:00"
LastRow = Cells(Rows.Count, 7).End(xlUp).Row
Cells(LastRow + 1, 7).Value = Format(currentTime, "HH:MM:SS")
Case "15:00"
LastRow = Cells(Rows.Count, 8).End(xlUp).Row
Cells(LastRow + 1, 8).Value = Format(currentTime, "HH:MM:SS")
Case "16:00"
LastRow = Cells(Rows.Count, 9).End(xlUp).Row
Cells(LastRow + 1, 9).Value = Format(currentTime, "HH:MM:SS")
Case "17:00"
LastRow = Cells(Rows.Count, 10).End(xlUp).Row
Cells(LastRow + 1, 10).Value = Format(currentTime, "HH:MM:SS")
End Select
End Sub
たしかデザインはこんな感じだった気がする...
で、業務中はポチポチするだけだったから、こんな感じにして画面の片隅に配置して使っていた気がする...
作成したその後
周りの人も使ってくださいました!
50行にも満たないマクロですが、業後の時間を使って家で1~2日ヒイヒイ言っていた記憶があります。
無知ながら、セキュリティを気にしたり、99%勉強事を現場でやる罪悪感から、家で試行錯誤して出来上がったものを写真撮って、ちょっと早めに出勤して書き写していました笑
今は300行くらいで業後1日ヒイヒイしているので、だいぶ成長が見られます。嬉しい。
ちなみに今書くのであれば・・・
Sub SetTime()
Dim current_time As Double
Dim last_row As Long
Dim times() As Variant
Dim col As Long
current_time = Time ' 現在の時間を取得
times = Array("9:00", "10:00", "11:00", "12:00", "13:00", "14:00", "15:00", "16:00", "17:00", "18:00", "19:00", "20:00") ' 記録したい時間を設定
now_hour = Format(current_time, "HH:00")
col = 2 ' 記録はB列から
For Each time_item In times
If time_item = now_hour Then
last_row = Cells(Rows.Count, col).End(xlUp).Row
Cells(last_row + 1, col).Value = Format(current_time, "HH:MM:SS")
Exit For
End If
col = col + 1
Next
End Sub
記録したい時間はセルから取得しようかとも思いましたが、そうそう変わるものでもないし、いっか。ということになりました。
さいごに
VBAよりGASの方が好きです。
閉じなきゃいけないの多すぎて、よく怒られます。