艾丹问是否可以使用字段来计算日期。似乎他希望将来的日期是两周,并且认为必须有一种使用字段来计算这样的将来日期的简便方法。不幸的是,没有简单的方法。虽然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"}" }}}}"}

这将返回两周后的日期(在设置“延迟”值的第一行中指定。当然,缺点是字段的复合性质-该复合字段中有30多个不同的字段!看起来很难实现,但在所有情况下都无法正确处理leap年(在世纪年中不能正确处理被400整除的leap年)

|有一种简单的方法是,仅使用宏即可,只需几条简单的指令,您就可以简化原本难以完成的日期计算工作,这在早期的_WordTips; _中也有介绍。以下Word MVP页面上的信息:

http://word.mvps.org/FAQs/MacrosVBA/DateOfPrevMonth.htm

_WordTips_是您进行经济有效的Microsoft Word培训的来源。

(Microsoft Word是世界上最流行的文字处理软件。)本技巧(1579)适用Microsoft Word 97、2000、2002和2003。您可以在以下位置找到Word的功能区界面的本技巧的版本(Word 2007及更高版本):