【发布时间】:2018-09-23 02:29:05
【问题描述】:
下面的宏将输入字段标题,后跟字段值。 If 语句应检查字段的值,如果大于 30,则给出实际值,否则为零。
如果它是真的,我只会得到我输入的实际文本,而不是显示的值,而不是它的值。
Sub Macro1()
Dim doc As Word.Document
Dim dtField As Word.MailMergeDataField
Dim sFieldName As String
Dim sFieldActualName As String
Dim j As Integer
Set doc = ActiveDocument
j = 1
For Each dtField In doc.MailMerge.DataSource.DataFields
sFieldActualName = doc.MailMerge.DataSource.FieldNames(j).Name
sFieldName = dtField.Name
Selection.TypeText Text:=sFieldActualName + ": "
'---------------------------------------------------------------------------
doc.MailMerge.Fields.AddIf Range:=Selection.Range, MergeField:= _
sFieldName, Comparison:=wdMergeIfGreaterThan,_
CompareTo:="30", TrueText:="{MERGEFIELD sFieldName}", _
FalseText:="0"
'---------------------------------------------------------------------------
Selection.TypeParagraph
j = j + 1
Next
End Sub
如果我需要澄清任何事情,请告诉我。
编辑:我在 excel 中使用的示例数据
one two three four five
85 50 63 50 41
52 10 84 10 15
85 25 63 35 10
【问题讨论】:
-
我不明白您所说的“我输入的实际文本”是什么意思。在哪里/何时输入?
-
抱歉,我将 TrueText:="{MERGEFIELD sFieldName}" 放在 if 语句中,word 文档将只打印 {MERGEFIELD sFieldName} 而不是 85 或该字段应具有的任何值。
标签: vba ms-word mailmerge mergefield