はじめに
普段UiPathの記事を書いていますが、今回は簡単に工数を管理してくれる方法がないか考えてExcelVBAで工数管理表を作成し、そのナレッジを書くことにしました。
ExcelVBAを使用したことがある方にわかる内容になっています。
またこれを作成しようとした意図についても書きます。
工数管理の大変さ
普段、私はサクラエディタでタスク管理をしています。タスク管理は業務中に何回も見ています。具体的には下記のようにしています。
・業務開始時に残タスクの優先度を確認する。
・業務中に完了したものがあれば、その時に「完了」と「かかった工数時間」を記載する。
・業務中に発生した緊急のタスクや追加タスクがあれば、残タスクと比較して優先度を確認する。
・業務終了30分前に残タスクの優先度を確認する。
上記の方法でうまく管理できていました。
しかし、先月1人で約20本のロボットの改修+αのタスクを行い、常に改修作業でタスクの優先度は確認できたものの、工数時間の管理ができなかったです。忙しいときにも「簡単に工数を管理できたらな」と考えました。
ExcelVBAで工数管理
UiPath以外にもExcelVBAのスキルがあったので、それで管理してみようと考えました。
UiPathで管理しようと考えましたが、結局Excelのみで管理するので、ExcelVBAの方が手間がないと考えました。
Excelのフォーマット
実行ボタンがあるあるシート↓↓
実行前の工数管理表↓↓
実行後の工数管理表↓↓
実際のコード
実行ボタンの作成方法がわかるのであれば、このコードのコピーと工数管理表のヘッダでExcelを作成してもらえば、使用できると思います。久しぶりに書いたので綺麗さなどは大目に見てください!
Dim IX_最終行 As Long
Dim IX_行数 As Long
Dim IX_年月 As String
Private Sub 工数計算_Click()
IX_年月 = Format(Date, "yyyym")
With Worksheets(IX_年月)
IX_最終行 = .Cells(1, 2).End(xlDown).Row
IX_行数 = 2
For IX_行数 = 2 To IX_最終行
.Cells(IX_行数, 3) = .Cells(IX_行数, 7) + .Cells(IX_行数, 3)
If .Cells(IX_行数, 6) <> "" Then
.Cells(IX_行数, 4) = "完了"
End If
.Cells(IX_行数, 7).Clear
If .Cells(IX_行数, 4) = "完了" Then
.Range(.Cells(IX_行数, 1), .Cells(IX_行数, 10)).Interior.Color = RGB(200, 200, 200)
End If
If .Cells(IX_行数, 2) <> "" Then
.Cells(IX_行数, 1) = IX_行数 - 1
End If
Next
End With
End Sub
さいごに
久しぶりにコードを書いて楽しかったです!!
これを用いてからは日々の工数管理が楽になりました。一方でこれを用いて月次報告をすぐにできるようにしたいと考えています。