VBAで一日を30時間にしよう!

一日を30時間にしたい

したくないですか?
したくない人がいますか?ってレベルの問ですよね。これ。
単純計算して余暇や睡眠時間が+6時間ですよ。

そんな時間があったら何が出来るかな。小説を書いたり、寝たり、ゲームしたり、積んでる小説読んだり、マンガ読んだり、散歩したり、小説書いたりできる。楽しい。

最高かよ。

あぁ~~~!!!一日が30時間だったらなぁ~~~!!!


というわけで、Excel上で動くお手軽プログラムでお馴染み、VBA(Vanity Brain Armor)マクロにて、一日を1時間~48時間にするプログラムを作りました。


Vanity Brain Armorってなんだよ。

概要

エクセル上にボタンを配置して

一日を何時間にしたいですか?という質問に答えると
(スクショする画面サイズの都合上、27時間でいきます)

新時間(今回は27時間)と旧時間(24時間)の対応表が出来ますね。

これを書いている『24時間次元における18時57分』は『27時間次元における21時17分』にあたります。


それだけです。

よくあるごしつもん

Q1.これの用途は?

「1日が25~48時間」あったらなぁ!というときに使います。
何時間も何時間も遊んだり、作業した気分になれてとてもグッド。

また「アッ!21時!もう食べないぞ!」「1時間で作業ここまでやるぞ!(本当は45分)」など、生活スケジュール管理にも使えますね。

Q2.表生成しただけだと見にくい。

アナログ時計めいたアニメーションを造れたら見やすいはず。
初期設定に合わせて文字や画像を配置して、アニメーションで動かす……ってやればいいんでしょうかね?

現実世界との同期がちょっと大変かもしれない。

Q3.エッじゃあアプリになるの?

需要あるんですかね。深夜テンションで作っただけなんですけど。

生活管理アラームを一緒に付けたらいいのかな。

Q4.どこかで覚えがある…

Twitterの25時間時計(@25_Clock)様が元ネタになっております。

Q5.通勤通学、待ち合わせ、交通機関との対応が大変!

責任を負いかねます。

Q6.ソースは?

こんな感じです。

Private Sub CommandButton1_Click()
’変数とかの設定
Dim newDH As Integer, newHM As Double
Dim timeField As Object

'時間記述領域の指定とリセット
Set timeField = Range("A2:B49")
timeField.ClearContents

'新しい「1日は何時間」を決める。上下限あり
newDH = Application.InputBox("一日は何時間?", Type:=1)
If newDH < 1 Or newDH > 48 Then
  MsgBox ("1時間以上48時間以内で入力してください。")
  End
End If

'新しい「1時間は何分」を決める。24時間の場合60分になるように
newHM = 60 * 24 / newDH

'記述開始
For i = 1 To newDH
  ’新時間における「何時」を記述
  ’0時=24時の処理

  If i = 1 Then
   timeField.Cells(i, 1).Value = i - 1 & "時(" & newDH & "時)"
  Else
   timeField.Cells(i, 1).Value = i - 1 & "時"
  End If
  ’0時から何分経った=何時何分、を24時間法で記述
  timeField.Cells(i, 2).Value = TimeSerial(0, newHM * (i - 1), 0)
Next
End Sub

TimeSerial、初めて使いました。
細かい変換なく時間計算してくれるのは有難いですね。

その他、何かありましたらコメントやリプライをお願いします。

あとがき

「1時間は何分」を「数値として」計算するところまでは簡単でしたが、それを「時間表現」に落とし込むのはちょっとお勉強でしたね。
新しい技術を知るのって楽しいなぁ!

アニメーションとかの制御したり、現実との同期をしたり、ましてアプリにしたりはちょっと大変そうですが、まぁ追い追い考えてみます。
アイディアはとりあえず持ってて損はないですもの。
サイバー閑古鳥すら寄ってこないこの記事を見てまさかパクるなんて輩は…いない…ですよね?

黄金週間の最後に、さっくりでも手ごたえを得られてよかったなァと思いました、はい。

……働きたくない……遊びプログラムコードと小説書いていたい…

休日が一日300時間だったらなーッ!!!

(終劇)

Twitterとかマシュマロ(https://marshmallow-qa.com/A01takanash1)とかで感想頂けるだけでも嬉しいです。 サポートいただけるともっと・とってもうれしいです。