Word 2007 字段代码依赖于文本表单字段来计算日期,当文本表单字段为空时给出当前年份

问题描述 投票:0回答:1

我有一个 Word 文档,我使用书签文本表单字段根据当前日期计算年龄(以年为单位)。当文本表单字段为空时,字段代码返回当前年份。当添加书签的表单字段为空时,我希望它不返回任何文本。

文本表单字段类型为“日期”,格式为 M/d/yyyy,书签为“DOB”

这是我必须计算年龄的字段代码:

{QUOTE{SET by {DOB \@ yyyy}}
{SET bm {DOB \@ M}}
{SET bd {DOB \@ d}}
{SET yy {DATE \@ yyyy}}
{SET mm {DATE \@ M}}
{SET dd {DATE \@ d}}
{Set Years {=yy-by-(mm<bm)-(mm=bm)*(dd<bd) \# 0}}
{IF {DOB}= “” “” {Years}}

据我了解,当加书签的文本表单字段不包含文本时,该字段在技术上不是“空”或空白,因此我使用 IF 函数的最后一行字段代码不起作用。

我需要帮助才能使该代码在未填写文本表单字段时返回空白或空字段。

空文本表单字段中包含什么语法?

if-statement syntax ms-word textfield fieldcodes
1个回答
0
投票

我建议你一开始就测试DOB,如下所示:

{IF {DOB} = "     " "" "{SET by {DOB \@ yyyy}}{SET bm {DOB \@ M}}{SET bd {DOB \@ d}}{SET yy {DATE \@ yyyy}}{SET mm {DATE \@ M}}{SET dd {DATE \@ d}}{=yy-by-(mm<bm)-(mm=bm)*(dd<bd) \#0}"}

(我让您重新组织它以适应您的布局偏好)

...这部分

IF {DOB} = "     "
中引号之间的字符只是常规空格。

作为背景,如果您使用VBA检查Word在空文本表单字段中实际显示的字符代码,它是U+2002(十进制8194),这是一个Unicode n空格字符。我认为在更旧版本的 Word 中,它可能是不间断空格字符(ASCII 十进制 160)。但是,您可以在表单字段中输入多种类型的 5 个空格(m 空格、n 空格、普通空格、不间断空格,我没有全部检查过),它们都与 5 空格文字匹配。

因此,在您实际需要区分用户输入 5 个常规空格和将表单字段留空的情况下,此测试还不够。但因为您已将该字段格式化为日期,据我所知,唯一的选择是将字段留空或输入有效日期,因此即使用户可以输入 5 个普通空格,也不会出现真正的混乱。

© www.soinside.com 2019 - 2024. All rights reserved.