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

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

(Microsoft Word是最受欢迎的文字处理软件这个技巧(8660)适用于Microsoft Wor d 2007、2010、2013、2016、2019和Office 365中的Word。您可以在此处找到适用于Word的较旧菜单界面的本技巧的版本: