Stephen询问是否可以控制Word插入的交叉引用的格式。当他插入标签和数字(例如表1或图12)时,他希望标签的小写字母(表格,图)以及标签和数字之间的不间断空格。

在Word中无法控制这种类型的交叉引用格式。显然,您可以在放置交叉引用后手动更改它们,但是无论何时更新字段,原始的Word选择格式都将用于它们。您可以尝试几种基于宏的解决方案。第一个解决方案将更改用于该字段的实际字段代码:

Sub FieldRefChanges1()

On Error Resume Next     Dim oStoryRng As Range     Dim oFld As Field

For Each oStoryRng In ActiveDocument.StoryRanges         For Each oFld In oStoryRng.Fields             If oFld.Type = wdFieldRef And oFld.Result.Words.Count <= 2 Then                 'add format switch with lowercase option to field codes                 oFld.Code.Text = oFld.Code.Text & "\* lower "

'updates the field results to display the new format                 oFld.Update             End If         Next oFld     Next oStoryRng End Sub

该宏包括几个嵌套的For循环。第一个遍历文档中的每个故事,第二个遍历每个故事中的每个字段。然后使用If语句来确保该字段是REF字段(用于交叉引用的类型),并且该字段的结果是两个或更少的单词(如表1或图12所示)。

如果满足这些条件,则宏将更改实际的域代码,并添加导致该域以小写形式显示的开关。

此宏有两个缺点。首先,如果您多次运行它,则\ *下部开关将多次添加到REF字段中。其次,宏不会将字段结果中的空间更改为不间断的空间。

要克服这两个问题,只需修改宏,使其自动执行更改宏结果所要执行的手动过程。

Sub FieldRefChanges2()

On Error Resume Next     Dim oStoryRng As Range     Dim oFld As Field     Dim sTemp As String     Dim J As String

For Each oStoryRng In ActiveDocument.StoryRanges         For Each oFld In oStoryRng.Fields             If oFld.Type = wdFieldRef And oFld.Result.Words.Count <= 2 Then                 sTemp = oFld.Result.Text                 sTemp = LCase(sTemp)

J = InStr(sTemp, " ")

sTemp = Left(sTemp, J - 1) & Chr(160) & _                   Mid(sTemp, J + 1, Len(sTemp) - J)

oFld.Result.Text = sTemp             End If         Next oFld     Next oStoryRng End Sub

该宏与上一个宏基本相同,不同之处在于它严格与该字段的结果文本一起使用。文本被分配给sTemp变量,然后将其转换为小写字母。确定空间的位置,并将其替换为不间断的空间。然后将结果填充回该字段的结果文本中。

注意:

如果您想知道如何使用此页面(或_WordTips_网站上的任何其他页面)中描述的宏,我准备了一个包含有用信息的特殊页面。

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

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