我需要你的帮助。我有一个小代码,它总结了10个formfields的值。此表单域的格式使用1000分隔符设置。我遇到的问题是VBA现在返回一个类似1.000的值为1.换句话说:1 + 10 + 100 + 1.000 = 112。如何调整代码以便在计算这些表单时忽略1000分隔符?非常感谢任何帮助!
ActiveDocument.FormFields("voattot").Result = Val(ActiveDocument.FormFields("betvoat1").Result) _
+ Val(ActiveDocument.FormFields("betvoat2").Result) + Val(ActiveDocument.FormFields("betvoat3").Result) _
+ Val(ActiveDocument.FormFields("betvoat4").Result) + Val(ActiveDocument.FormFields("betvoat5").Result) _
+ Val(ActiveDocument.FormFields("betvoat6").Result) + Val(ActiveDocument.FormFields("betvoat7").Result) _
+ Val(ActiveDocument.FormFields("betvoat8").Result) + Val(ActiveDocument.FormFields("betvoat9").Result) _
+ Val(ActiveDocument.FormFields("betvoat10").Result)
答案 0 :(得分:2)
我创建一个单独的函数来解析表单字段
中的结果字符串Function GetFieldValue(FieldName as string)
Dim FF As FormField
Dim Result As String
Dim Value As Double
Set FF = ActiveDocument.Formfields(FieldName)'Find the Form Field
Result = FF.Result 'Get the Text from the Form Field
Result = Replace(Result, ",", "") 'Remove any commas
If Trim(Result) ="" Then
GetFieldValue= 0 'Return the numeric valu
ElseIf Isnumeric(Result) Then
Value = CDbl(Result) 'Convert to numeric value
GetFieldValue= Value 'Return the numeric value
Else
Debug.Print "Not IsNumeric(""" & Result & """)"
GetFieldValue= 0
End If
End Function
然后你可以把你的陈述写成
ActiveDocument.FormFields("voattot").Result = GetFieldValue("betvoat1") _
+ GetFieldValue("betvoat2") + GetFieldValue("betvoat3") _
+ GetFieldValue("betvoat4") + GetFieldValue("betvoat5") _
+ GetFieldValue("betvoat6") + GetFieldValue("betvoat7") _
+ GetFieldValue("betvoat8") + GetFieldValue("betvoat9") _
+ GetFieldValue("betvoat10")
这也意味着您可以将错误捕获放入函数中以处理空值或非数值或缺少表单字段。 是否值得为此烦恼取决于你