LoginSignup
0
1

More than 5 years have passed since last update.

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

Posted at

ポイント

基本

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

関数

今日の日付を取得するのは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です。
このように期限も前日か当日か場合によって違います。

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

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

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1