ご要望のExcel資料がボタンクリックのみで簡単に作成できるよう、「計時記録とデータ編集機能のついたストップウォッチ」的な物を考えました。
物と言っても実体はプログラム(末尾に記載)であって、これを描画で作成したボタンに関連づけるだけで環境が整います。
あとはストップウォッチ感覚でExcelファイルのシート上に描画して配置されたボタンのクリックにより実現します。奇数回目のクリックは睡眠開始のサイン、偶数回目のクリックは、お目覚めのサインを示し。偶数回目のクリックを行うと瞬時にお望みの資料が自動作成/更新できます。
それには次のように三段階の準備作業があります。多少手数がかかりますが一度だけの作業です。
(1) 末尾のプログラムをコピーし、Excelの「Module1」という場所に貼り付ける。
AltキーとF11キーを同時に押し挿入(I)標準モジュールを選択することでModule1が用意されます。ここに貼り付けをします。
(2) ExcelのSheet1上のF1セル付近にボタンを描画する。
(3) 前項で描画したボタンにプログラムを登録する。登録マクロ名は「test」を選択します。
(2)と(3)の具体的方法は、文字数の都合で割愛します。http://personal.okwave.jp/kotaeru.php3?q=2160990のANo.2を参考に!!((2)の作業はツール(I)を右クリック、フォームを選択でもできます。)
説明が足りない点については、ご指示いただければ別途回答で・・・。
Sub test()
Sheets("Sheet2").Select
Cells(1, 1).Value = "月日"
Cells(1, 2).Value = "睡眠時間"
For ji = 0 To 23
Sheets("Sheet2").Cells(1, ji + 3).Value = ji & "時"
Next ji
Sheets("Sheet2").Select
Columns("A:B").Select
Selection.ColumnWidth = 10
Columns("C:Z").Select
Selection.ColumnWidth = 4
Sheets("Sheet1").Select
Cells(1, 1).Value = "月日"
Cells(1, 2).Value = "睡眠開始時刻"
Cells(1, 3).Value = "お目覚め時刻":
Cells(1, 4).Value = "睡眠時間"
rw = Range("A35565").End(xlUp).Row
If Cells(rw, 1) <> "" And Cells(rw, 2) <> "" And Cells(rw, 3) = "" Then mezame Else _
If Cells(rw + 1, 1) = "" And Cells(rw + 1, 2) = "" And Cells(rw + 1, 3) = "" Then hajime Else Exit Sub
End Sub
Sub hajime()
Sheets("Sheet1").Select
rw = Range("A35565").End(xlUp).Row + 1
Cells(rw, 1).Value = Date: Cells(rw, 1).NumberFormatLocal = "m""月""d""日"";@"
Cells(rw, 2).Value = Time: Cells(rw, 2).NumberFormatLocal = "h:mm;@"
End Sub
Sub mezame()
Sheets("Sheet1").Select
rw = Range("A35565").End(xlUp).Row
If Cells(rw, 1) <> Date Then Cells(rw, 3).Value = "24:00:00": _
Cells(rw, 3).NumberFormatLocal = "h: mm;@": _
Cells(rw, 4).FormulaR1C1 = "=(RC[-1]-RC[-2])*24": goukei: _
Cells(rw + 1, 1).Value = Date: Cells(rw + 1, 1).NumberFormatLocal = "m""月""d""日"";@": _
Cells(rw + 1, 2).Value = "00:00:00": _
Cells(rw + 1, 2).NumberFormatLocal = "h: mm;@": _
Cells(rw + 1, 3).Value = Time: Cells(rw, 3).NumberFormatLocal = "h:mm;@": _
Cells(rw + 1, 4).FormulaR1C1 = "=(RC[-1]-RC[-2])*24": goukei Else _
Cells(rw, 3).Value = Time: Cells(rw, 3).NumberFormatLocal = "h:mm;@": _
Cells(rw, 4).FormulaR1C1 = "=(RC[-1]-RC[-2])*24": goukei
End Sub
Sub goukei()
rw = Sheets("Sheet1").Range("c35565").End(xlUp).Row
tsukihi = Sheets("Sheet1").Cells(rw, 1): sjikan = Sheets("Sheet1").Cells(rw, 4)
slptime = Round(Sheets("Sheet1").Cells(rw, 2) * 24) '睡眠開始時刻
mzmtime = Round(Sheets("Sheet1").Cells(rw, 3) * 24) - 1 '目覚め時刻
For r = 2 To Sheets("Sheet2").Range("a35565").End(xlUp).Row
If Sheets("Sheet2").Cells(r, 1) = tsukihi Then Exit For
Next r
Sheets("Sheet2").Cells(r, 1).Value = tsukihi
Sheets("Sheet2").Cells(r, 2).Value = Sheets("Sheet2").Cells(r, 2) + sjikan
For x = 3 To 26
If slptimex <= mzmtime And x >= slptime + 3 And x <= mzmtime + 3 Then Sheets("Sheet2").Cells(r, x).Interior.ColorIndex = 50
Next x
End Sub
お礼
お陰様でパソコンを買いました。 ビスタになってからなのでお礼が遅くなりすみません。 とても参考になりました、これからオフィスをいれて実際にやってみたいと思います。 どうもありがとうございました。
補足
皆様、ご回答を頂きましてありがとうございます。 パソコンが壊れてしまい(店の話ですと熱がどうのこうので暑さ負け?のようです。) ただ今、実家のPCを借りて書いております。 必ず締め切りますしお礼も致しますが今しばらくお時間をいただければ幸いです。 ありがとうございました。