PR

1日のスケジュールをリアルタイムで記録して円グラフにするマクロ

1日のスケジュールをリアルタイムで記録して円グラフにするマクロを組んだので紹介する

スポンサーリンク

ダウンロード

まずはエクセルシートをダウンロード

シートの使い方

Addマクロ

Excelファイルを開くとこの画面が表示される

「Add」とかかれたマクロボタンをクリックすると,現在の時間が記録され,タスクが1つ追加される

C行3列目以降にタスクの名前を記入すると,グラフに表示される

1つのタスクが終わって,次のタスクに入るときに「Add」をクリックしていけば,どんどんタスクが追加されていく

Sub Add()

Dim count As Long
Dim current_time As Date
Dim midnight As Date

'記録されているタスクの個数を調べる
count = WorksheetFunction.count(Range(Cells(3, 1), Cells(26, 1)))

'現在時刻を取得
current_time = Format(Time, "hh:mm")

'24:00
midnight = 1

'現在のタスクの終了時刻を入力
Cells(3 + count - 1, 2) = current_time

'現在のタスクの所要時間を計算,入力
Cells(3 + count - 1, 4) = Cells(3 + count - 1, 2) - Cells(3 + count - 1, 1)

'次のタスクの開始時刻と終了時刻(仮)を入力
Cells(3 + count - 1 + 1, 1) = current_time
Cells(3 + count - 1 + 1, 2) = midnight

'現在のタスクの所要時間を計算,入力
Cells(3 + count - 1 + 1, 4) = midnight - current_time

End Sub

Newマクロ

「New」と書かれたマクロボタンをクリックすると,新しいシートが追加される

新しいシートの名前はデフォルトでその日の日付になっているので,1日の最初にクリックするのが好ましい

ちなみに,同じ名前のシートが既にあるときでもエラーを起こすことなく実行できる

Sub New_sheet()

Dim count As Long
Dim current_date As Date
    
'アクティブなシートを先頭・一番左にコピーする
ActiveSheet.Copy Before:=Sheets(1)

'記録されているタスクの個数を調べる
count = WorksheetFunction.count(Range(Cells(3, 1), Cells(26, 1)))

'記録されているタスクを全て削除
Range(Cells(3, 1), Cells(3 + count - 1, 4)).ClearContents

'デフォルトのタスクの開始時刻と終了時刻,所要時間を入力
Cells(3, 1) = 0 '0:00
Cells(3, 2) = 1 '24:00
Cells(3, 4) = 1 - 0 '24:00-0:00

On Error Resume Next 'エラーが出た場合,次の行から処理を再開する

'新しいシートの名前を現在の日付”○月〇日(〇)”に変更する
'すでに同じ名前のシートがあった場合この処理は行われない
ActiveSheet.Name = Month(Date) & "月" & Day(Date) & "日(" & WeekdayName(Weekday(Date), True) & ")"

End Sub

まとめ

先日ツイッターで見かけた次の記事(≫心が折れずにゲーム開発を続ける方法)の「メモ帳でF5」に触発されてマクロを作ってみた

細かい仕様はダウンロードした後に各々でマクロを書き換えて調整してほしい

参考にしたサイト

製作にあたって,以下のサイトを参考にした

円グラフの作り方

エクセル 1 日のスケジュールを円グラフにする

Addマクロ

【VBA入門】日付を扱う方法(取得、書式変換、比較、計算、チェック) _ 侍エンジニア塾ブログ(Samurai Blog) - プログラミング入門者向けサイト

Newマクロ

VBAでシートをコピーする-Worksheet.Copy_エクセルマクロ・Excel VBAの使い方_Sheets・Worksheet
Excel VBAで曜日を取得する:Weekday, WeekdayName _ UX MILK
Office TANAKA - Excel VBA Tips[エラーに負けない]

コメント

  1. 匿名 より:

    こんにちは。
    3行目スタートのB3に時間をいれると、入力した時間にならないのですが、
    なぜでしょうか?8:00といれても、17:04とかになります。。

    • @mtk_birdman @mtk_birdman より:

      コメントありがとうございます!
      「Add」ボタンをクリックすると,B列の終了時間とD列の所要時間がマクロによって自動的に入力される仕様になっています。(値が入力されていた場合は上書き)
      手動での入力は想定していないので,「Add」ボタンを使ってご使用いただければと思います。