【问题标题】:VAULE2 is removing leading zeros from currencyVAULE2 正在从货币中删除前导零
【发布时间】:2015-10-26 19:39:45
【问题描述】:

我正在读取包含货币值的文件并创建数据字符串以打印到文本文件中。我发现我需要使用 VALUE2 选项来阻止宏对值进行舍入。但是,我现在遇到了一个问题,如果任何尾随数字为零,它们就会被丢弃。我需要宏来保留所有数字。

例如,如果单元格的货币格式为 $10.50,则下面的代码会将 10.5 读入 payAmountTemp,但我需要 10.50。

payAmountTemp = Cells(j, 5).Value2

正确捕获数据的最佳方法是什么?仅供参考,然后我必须将文本文件的数据进一步格式化为一个 7 位数字字段,没有小数点和前导零,所以我接下来使用下面的代码。

payAmount = String(7 - Len(Replace(payAmountTemp, ".", "")), "0") & Replace(payAmountTemp, ".", "")

在上面的示例中,我得到 0000105,而我需要 0001050。

【问题讨论】:

    标签: string vba currency


    【解决方案1】:

    第二位小数:

    Format(payAmountTemp, "#0.00")
    

    七个地方

    Format(payAmountTemp * 100, "0000000;-000000")
    

    【讨论】:

    • 哇。获得七位数的这种更好看的方式。谢谢。
    • 实际上,这个问题出现了关于负数的问题。它将负号放在前导零之前,并且不将其计为数字。所以 -15.25 变成了 -0001525。虽然我不确定零之前的负号是否可以,但我知道它只需要 7 个字符的长度。第二个十进制格式正是我需要的另一个问题。
    • 然后使用If语句测试是否为负,并使用另一行只有六个0。
    • @Jay 我已经修复了一个语句,它不需要 if 语句。我会自动做出改变。
    猜你喜欢
    • 2019-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-18
    • 1970-01-01
    • 2018-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多