我有一个通过外部 Web 服务自动填充的文档模板。传入的数据以货币形式存在(例如 3.10),但是当它被传递到 Word 文档模板时,变量会被截断以删除任何尾随的 0。我需要数字始终以 2 位小数出现,即使它们都是 0。
这是 2003 版的 Word,我没有测试过其他版本,因为我们所有的文档模板都需要使用该版本的 Word 生成。
您应该能够在宏中使用 Format 函数来执行此操作:
Format(yourValue, "Currency")
为了让用户输入的文本框只能接受货币格式的值,我使用了这样的宏:
Private Function getValue(text As String) As Currency
If text = "" Then
getValue = 0
Else
getValue = CCur(Val(RemoveNonNumeric(text)))
End If
End Function
Private Function RemoveNonNumeric(inputStr As String) As String
Const NUMERIC_CHARS = "0123456789."
Dim result As String
Dim currCharIndex As Long
Dim currentString As String
Dim deciCount As Integer
Dim afterDeciCount As Integer
deciCount = 0
afterDeciCount = 0
For currCharIndex = 1 To Len(inputStr)
currentString = Mid$(inputStr, currCharIndex, 1)
If currentString = "." Then deciCount = deciCount + 1
If InStr(1, NUMERIC_CHARS, currentString) > 0 And deciCount < 2 And afterDeciCount < 3 Then
result = result + currentString
If deciCount > 0 Then afterDeciCount = afterDeciCount + 1
End If
Next
result = result
RemoveNonNumeric = result
End Function