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)とかで感想頂けるだけでも嬉しいです。 サポートいただけるともっと・とってもうれしいです。