Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用VBA创建字段时的额外空格:{EQ..}而不是{EQ..}_Vba_Ms Word_Field - Fatal编程技术网

使用VBA创建字段时的额外空格:{EQ..}而不是{EQ..}

使用VBA创建字段时的额外空格:{EQ..}而不是{EQ..},vba,ms-word,field,Vba,Ms Word,Field,我使用VBA在Word中创建重叠字符: a = "x" b = "." Selection.Fields.Add Range:=Selection.Range, Text:= _ "EQ \o (" & a & "," & b & ")", PreserveFormatting:=False 输出是 { EQ \o (x,.) } 其中产生:。从灰色框中可以看出,字符太宽。通过手动将字段更改为,可以将宽度减小为 { EQ \o (x,.)}

我使用VBA在Word中创建重叠字符:

a = "x"
b = "."
Selection.Fields.Add Range:=Selection.Range, Text:= _
        "EQ \o (" & a & "," & b & ")", PreserveFormatting:=False
输出是

{ EQ \o (x,.) }
其中产生:。从灰色框中可以看出,字符太宽。通过手动将字段更改为,可以将宽度减小为

{ EQ \o (x,.)}    or   {EQ \o (x,.)}

但如何在VBA中直接实现这一点

我的假设是你需要去掉最后一个括号和花括号之间的尾随空格

将x作为字符串

朦胧如弦

x=“{EQ\o(x,)}”

y=Replace(x,“}”,“}”)'注意查找表达式的空格,例如。'}' '还可以将“)}”替换为“)}”

y成为我认为你想要的输出

您只需使用上面显示的replace函数即可完成此任务

您的代码将成为

a = "x"
b = "."
Selection.Fields.Add Range:=Selection.Range, Text:= _
"EQ \o (" & a & "," & b & ")", PreserveFormatting:=False
Selection.Range.Text = Replace(Selection.Range.Text, ") }", ")}")

此代码为字段EQ分配正确的值

 ActiveDocument.Fields.Item(numderfield).Code.Text = "EQ \o (" & a & "," & b & ")"

你能给出一个关于如何基于
y
创建字段的例子吗?请找到修改后的答案。把这个方法放到你原来的例子里,谢谢你的修改。然而,它似乎对我不起作用。我认为Replace()是在Selection.Fields.Add()之前执行的,字符串中没有“}”要替换…很好,如果我们在该Fields.Add方法之后有任何方法可以引用它编写的内容,我们可以在那里调用Replace方法。这将模拟您手动执行相同的操作。我在上面照了照。