LoginSignup
4
1

未経験エンジニアが約3,4カ月目で初めて書いたマクロ

Last updated at Posted at 2024-04-19

急に、そういえばこんなの作ったな~というのを思い出したので、
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

たしかデザインはこんな感じだった気がする...
image.png
で、業務中はポチポチするだけだったから、こんな感じにして画面の片隅に配置して使っていた気がする...
image.png

作成したその後

周りの人も使ってくださいました!

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の方が好きです。
閉じなきゃいけないの多すぎて、よく怒られます。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1