いきさつ
4月29日(土曜日)の午前中こと‥‥
高血圧の薬が切れるので、午前中に吉村胃腸科内科医院に行ったら、駐車している車が1台も無い。
玄関も締まっており、「GW中の休診日のお知らせ」の張り紙も無い。
土曜日は午前中のみの診療のはずだが...
帰宅し、ネットを "吉村胃腸科内科医院 ゴールデンウイーク" で検索したら‥‥
とりあえずその旨だけを Googleカレンダーに入力しておこう‥‥ と、PCで開いて気が付いた。
祝日は赤地で表示するようにしてある
膝痛と腰痛で通っている「さいとう整形外科」の、先生には「リハビリを続けるように」と、理学療法士さんには「週に2~3回来なさい。サボっちゃーいけませんょ」と言われているが
Excel家庭血圧グラフの改修
下図は、月一、高血圧の薬を貰いに行く時に持って行っている家庭血圧グラフで、
- グラフデータは測定2回の平均値で作図している。
- 右端の4月中旬のように、データが無い時は「データ要素を線で結ぶ」にしているが、データは計算式で作っているので、これが面倒だった。
改修のポイント
血圧データは原則毎日測定しているので、1ヶ月分の日付は事前にフィルハンドルでコピーして作ってある。
例えば下図は6月一ヶ月分のデータを作ったもので、
4月は血圧計の操作ミスで 4/10夜~4/19朝のデータを消してシマッタ!
このままグラフを作ると「#DIV/0!」は「ゼロ」と見なされ、面白くないので、「#DIV/0!」のセルをクリアするマクロは作って計算式を消していた。
そこで、今回のトラブルを機に、
- 測定した日のデータのみ入力する。
但し、朝または夜の測定値が無い場合は、これまでどおりグラフ作成時に「#DIV/0!」セルをクリアする。(まだ改善の余地がある‥‥ ということ) - 具体的には、
時刻(B列)にカーソルが来た時、測定日(A列)に入力があれば、直上の U列~AC列の計算式をコピーする。
マクロ(VBA)の改修
Sub名:次の空白朝時刻にカーソルを移す
- ショートカット:Ctrl+Shift+N(N は New の積り)
- 改修点:測定日が未入力の時は、測定日にカーソルを移す。
Sub名:Worksheet_SelectionChange(Worksheetオブジェクト)
- 新規作成‥‥ Worksheetオブジェクトに記述する
- 機能
- B列がアクティブ(Target.Column)になった時
- 測定日に入力があり、朝時刻が未入力の場合、警告を出して、直上の数式をコピーする。
- VBAコード
機能確認優先のため汎用性はない。
01.Private Sub Worksheet_SelectionChange(ByVal Target As Range) 02.Dim mbTitle As String 03.Const B列 As Long = 2 04.Const U列 As Long = 21 05.Const AC列 As Long = 29 06.Dim i As Long, c As Long, r As Long 07. 08. mbTitle = "Worksheet_SelectionChange/" & ThisWorkbook.Name 09. 'B列がアクティブになったら、直上の行の数式をコピーする。 10. If Target.Column = B列 Then 11. r = ActiveCell.Row 12. c = ActiveCell.Column 13. If ActiveCell <> "" Then Exit Sub 14. If Cells(r, c - 1) = "" Then Exit Sub 15. If MsgBox("直上の U~AC列の値(数式等)をコピーしますか?", vbYesNo + vbQuestion, mbTitle) _ 16. = vbNo Then Exit Sub 17. 'Ctrl+D(同上)を行う。 18. For i = U列 To AC列 19. Cells(r, i).FillDown 20. Next 21. End If 22. 23.End Sub
改修結果
今のところ不具合は発生していないが...