OUTLOOK タスク(仕事)で残日数、経過日数を表示させる

ポイント

基本

残日数は今日と期限の差であらわすことができる
(本当は期限に日付が入っていない場合のエラー処理をやります)
経過日数は開始日と今日の日付で計算させます
(開始日なんて誰も入れないので、本当はこれもエラー処理が必要です)

関数

今日の日付を取得するのはDate()
日数の差を計算するのはDateDiff
datediff("d",[開始日時],date())
フィールド名で指定する
"d"が日数
DateDiff("d",[A],[B])
[B]-[A]
日付に何も設定していない場合 #1/1/4501#
西暦4051年1月1日
になっている。
Accessのクエリのようにフィールド名で指定する
(というか実際DASLというSQLの一種を使っている)
次のフィールドを定義する
今回は経過日数と残日数を定義する

それ以外に付け加えられるもの

手動で更新する必要があるが、たとえば講義で全10回の第1回というような場合のため
[全]と[回]
というフィールドを設定してもよい

ユーザー定義フィールドはソートできない

この定義はVBAではできないっぽい

オブジェクトが捕まらない

厳密にいうと…

経過日数を示すのは難しい
経過日数を示すには
計算を開始する日 現在の日 期限
が必要で新たに計算を開始する日を設定する

手順

1.列を作成

設定の方法

タスク(仕事)を表示させる
[表示]タブ
ビューの設定
列(C)
[内容]タブ
新しい列をクリック
タイトルを入れる
数式を選択
これでOKして、フィールドに表示させ、レイアウトを調整する。
出来上がったらビューの設定から現在のビューを保存する。

2.作成するユーザー定義フィールドと設定の内容

フィールド名

経過日数

IIf([開始日]<>#1/1/4501#,DateDiff("d",[開始日],Date()))

フィールド名

残日数

IIf([期限]<>#1/1/4501# Or Date()>=[期限],DateDiff("d",date(),[期限])

3.入力

タスクを設定してリストのように表示します。
Outlook的にはTableViewになるようです。
ユーザー定義フィールドはタスクを開いてインスペクター表示しても出てきません。
テーブル表示の画面で
「ゆっくり2回」
入力する欄の部分をクリックします。
するとなぜか入力できます。

厳密にいうと

開始日は将来の場合もある

タスクは開始日ではなく事前に登録することもあります。
すると
DateDiff("d",[開始日],Date())
この式はマイナスになります。
このように考えていくと計算を開始する日(個人的にこれを始計日と呼んでいます)が必要です。

期限の隠しフィールド、そして期限の考え方

期限については一つタスクでメール用の表示の中の期限切れ日時(Expire Date)を使う方法もあります。
また試験などでは試験当日を0にするのではなく試験の前の日が0です。
このように期限も前日か当日か場合によって違います。

しかしあまり難しいことを考えてもきりがない

なので、単純に表示させた方がいいと思います。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.