首页 > 解决方案 > 将字符串转换为双精度字(vba)

问题描述

我正在尝试将 word 文档中的文本转换为双精度文本,以便对其进行货币格式化。我从邮件合并中收到此文本。我将如何创建一个可以接收此文本并将其作为数字返回的宏?我不熟悉单词和 VBA 脚本。到目前为止我所做的是

Function stringToDouble(baseString As String)
    Dim num As Double

    num = Val(baseString)

    stringToDouble = num

End Function

我不确定如何调用这个宏。因为它需要一个参数,所以它不会出现在宏表中。我可能完全不知道如何将文本转换为单词中的双精度词,但感谢您提供任何帮助。谢谢。请发表评论以获得任何澄清。

标签: vbams-word

解决方案


你不需要这个宏!!!您需要做的就是学习如何在 Word 字段中使用格式开关。

若要控制 Word 中的数字和货币格式,请将数字图片开关添加到合并字段。去做这个:

  • 选择合并域;
  • 按 Shift-F9 显示字段编码。它应该类似于 {MERGEFIELD MyData};
  • 编辑该字段以获得 {MERGEFIELD MyData # $,0.00} (或您喜欢的任何其他数字格式 - 见下文);
  • 将光标放在此字段中的任意位置,然后按 F9 进行更新。

注 1:字段中的“#$,0.00”称为数字图片开关。其他可能性包括:

  • # 0 表示四舍五入的整数
  • # ,0 表示带有千位分隔符的四舍五入整数
  • # ,0.00 表示精确到小数点后两位的数字,带有千位分隔符
  • # $,0 表示带有千位分隔符的四舍五入的整数
  • # "$,0.00;($,0.00);'-'" 表示货币,用括号括住负数,用连字符表示 0 值

注2:显示值的精度由“0.00”控制。您可以使用从“0”到“0.000000000000000”的任何值。如果你使用最后的';' 在没有任何后续的格式化开关中,(例如 # "$,0.00;($,0.00);") 零值将被抑制。请注意,这会抑制由空字段和包含 0 的字段产生的 0。

注意 3:如果您使用小数制表符或右对齐制表符来对齐值,请将开关括在引号中(即 #"$,0.00")并在 $ 符号后的域代码中插入制表符,您可以值输出与 $ 符号后发生的小数对齐。

有关更多 Mailmerge 提示和技巧,请参阅:https ://www.msofficeforums.com/mail-merge/21803-mailmerge-tips-tricks.html


推荐阅读