Aidanは、フィールドを使用して日付を計算できるかどうか尋ねました。彼は2週間先の日付を望んでいるようで、フィールドを使用してそのような将来の日付を計算する簡単な方法があるはずだと考えました。残念ながら、簡単な方法はありません。 Wordでは、フィールドの数値を使用して簡単な計算を実行できますが、数値の代わりに日付を使用してそのような計算を実行することはできません。

ただし、日付を本質的な部分(月、日、年)に分解してから計算を行うことはできますが、これにより、一連の新しい問題が発生します。突然、月または年の終わりを過ぎて「転がる」ときに何が起こるかを心配する必要があります。このような計算を行うための計算は簡単ではありません。例として、次の複合フィールドについて考えてみます。

{QUOTE "{SET Delay "14"}{SET "DaysInMonth" {IF {DATE \@ "MM"} <> 2 {=ROUND(30.575{DATE \@ "MM"},0)-ROUND(30.575{= {DATE \@ "MM"} —1},0)}{IF {=MOD({DATE \@ "yy"|, 4)} > 0 "28" "29"}}}{SET "NextMonth" {IF {DATE \@ "MM"} = 12 "1/97" "{= {DATE \@ "MM"} + 1}/97}}{IF {= {REF Delay} + {DATE \@ "dd"}} <= {DaysInMonth} {DATE \@ "MMMM {= {REF Delay} + {DATE \@ "dd"}}, yyyy"}{QUOTE "{NextMonth \@ "MMMM"} {= {REF Delay} + {DATE \@ "dd"} — {DaysInMonth}}, {IF {DATE \@ "MM"} <> 12 {DATE \@ "yyyy"}{DATE \@ "{= 1 + {DATE \@ "yyyy"} \# "xxxx"}" }}}}"}

これにより、日付が2週間で返されます(遅延値が設定されている最初の行で指定されます。もちろん、欠点はフィールドの複合的な性質です。この複合フィールド内には30を超える異なるフィールドがあります。これでも実装は、見た目は手ごわいですが、すべての場合にうるう年を正しく処理するわけではありません(400で割り切れる世紀のうるう年を正しく処理することはできません)

簡単な方法はありますか?将来の日付を計算するには?はい、あります-単にマクロを使用します。いくつかの簡単な手順で、他の方法では難しい日付計算から簡単な作業を行うことができます。これは以前の_WordTips_で説明されていました。次のWordでも情報を見つけることができます。 MVPページ:

http://wordmvp.com/FAQs/MacrosVBA/DateOfPrevMonth.htm

_WordTips_は、費用対効果の高いMicrosoft Wordトレーニングのソースです。

(Microsoft Wordは、最も人気のある単語処理ソフトウェアです。このヒント(8660)はMicrosoftWorに適用されますd 2007、2010、2013、2016、2019、およびOffice 365のWord。Wordの古いメニューインターフェイスに関するこのヒントのバージョンは、次の場所にあります。