まりふのひと

血圧グラフを更新し、吉村胃腸科内科医院に高血圧の薬をもらいに行った

 高血圧の薬が切れたので、(1)血圧グラフを更新し、11時過ぎ、(2)吉村胃腸科内科医院で今日は診察も受けた。


血圧グラフ

 何時ものように1か月分の血圧データを入力し、グラフを作成した。


グラフは

  • データ数が多い(2年間分で ほゞ毎日)ので、「散布図」とし、
  • 横軸は「日付」なので、最小値は1日(R2/1/1)、最大値は月末(今月は R3/12/31)とし、補助目盛の間隔を「一月」

として見易くしている積りだが、今月で言えば 29~31日のデータはないので結果としてゼロ(0)となる。
そこで、グラフタイトル( "家庭血圧グラフ" )の下に、何日現在のグラフかを表示したかった...
 先月までは出来ていなかったが、下記サイトを見つけ、(1)ユーザー定義関数で、(2)Application.Volatile メソッド で下記VBAコードで目標を達成した 😁

f:id:ogohnohito:20211228204854p:plain

完成したVBA ユーザー定義関数

1.Function get最終測定日() As Date
2.Dim lastRow As Long
3.
4.  Application.Volatile
5.  lastRow = Cells(Rows.Count, 2).End(xlUp).Row
6.  get最終測定日 = Cells(lastRow, 1)
7.
8.End Function

ユーザー定義関数の再計算と更新ができない!対処方法4つを試した

引用:のんびりよりみちきっぷ
www.nonbiri-yorimichi.com エクセルでユーザー型関数(Function)を作って作業していたんですが、参照値を変更しても結果が変わらない・更新されないということが起きました。
対処
  1. 参照先を1つずつ更新
    • 関数の引数になっているセルをとにかく「クリック→ENTER」していきます。
      作業自体は簡単ですが、データが大量の場合や頻繁にデータが変わって更新させたい場合には向きません
  2. 「application.volatile」を追加
    • 作った関数のFunctionの下に「application.volatile」を追加します。
      ユーザー関数を自動計算関数にするメソッドで、ワークシートのセルに変化があると自動的にマクロが動いて結果が更新されます。
       ユーザー関数に関係のないセルの変化でも関数が動くので、データ数が多いと計算時間が長くなります。こちらもデータ数が多い場合には向きません。
  3. 引数のセルをマクロで更新
    • 引数となっているセルが変化すれば関数が動き出すなら、引数を変化させるマクロを組んでしまえというやり方です。この「変化」とは値の上書きです。
       シート上にフォームボタンを追加しておけば、ワンクリックで結果を更新させることが可能です。
  4. トリガ変数を関数に追加
    • 関数の動作のきっかけになるように引数を追加します。

Application.Volatileについて

引用:VBAの部品庫
vbanobuhinko.com 「Application.Volatile」メソッドは、ユーザー定義関数を揮発性にするコードです。
揮発性とは、引数に関係の無いセルが更新された時でも再計算が実行される状態になることを言います。通常は、引数に関係あるセルが更新された時に再計算は実行されます。
 このメソッド自体はどこに入れても構いませんが、揮発性にしていることを分かり易くするために、最上部に挿入してください。
これでこのユーザー定義関数は揮発性になったため、関係のないセルが更新されても再計算が実行されます。

Dr. による診察結果

 何時もと同じであった。

  • Dr.:何か変わったことがありませんか?
  • me:関係ありませんが、下肢静脈瘤の手術を受けました。
  • Dr.:その件で(周東総合病院の)上田先生から手紙をもらっています。
  • me:(一瞬 ビックリ)
  • Dr.:血圧はチャンと測定してあるし、問題ありません!
  • Dr.:何かあったら、直ぐ来てくださいね。