【问题标题】:How to format a variable as currency inside of a string如何将变量格式化为字符串内的货币
【发布时间】:2018-04-11 20:57:34
【问题描述】:

以下所有内容都发生在 If 语句中

我有一个变量,差异,它是两个货币值相减的结果。

然后我有另一个变量 Message,如下所示:

    If AssessedValue < ProposedValue Then
        Difference = Format(ProposedValue - AssessedValue, "Currency")
        Message = "Average value is " & Difference & " more than the current 
        appraised value. Do NOT recommend negotiations."
    Else
        Difference = Format(AssessedValue - ProposedValue, "Currency")
        Message = "Average value is " & Difference & " less than the current 
        appraised value. Recommend negotiations."
    End If

我的问题是在显示的消息中,差异不显示为货币,而只是一个未格式化的数字而不是货币(下面的消息示例) 平均值比当前评估值多21587。不要 建议谈判。

在本例中,如何让 21587 在消息中显示为 $21,587.00?

在此先感谢您对此问题的任何帮助。 柯克

【问题讨论】:

  • 能否将差值格式化为带 2 个小数点的数字,并将 $ 添加到消息中的文本中?
  • 只用Format(Difference, "Currency")?或者将Difference 更改为String 数据类型,而不是数字数据类型? (您发布的代码没有显示它是如何声明的,但我认为它是数字的,否则您不会有问题。)
  • 您的问题应包括DifferenceAssessedValueProposedValue 变量的声明(Dim 语句),以便回答者不必推测重要的上下文。
  • 很抱歉没有包括我的声明,差异是一个长数据类型,因为我的一些差异可能是数百万美元的金额。下面YowE3K回复的方法1解决了我的问题。再次感谢大家的意见!
  • 如果Difference 被声明为Long,你需要意识到它永远不会包含美分。如果需要美分,则应将其声明为Currency(如果消息是您使用它的唯一位置,则应声明为String)。

标签: string vba variables format currency


【解决方案1】:

有几种方法可以解决您的问题:

  1. 在将Difference 包含在字符串中之前,使用"Currency" 格式格式化Difference,例如

    Message = "Average value is " & Format(Difference, "Currency") & " more than the current appraised value. Do NOT recommend negotiations."
    
  2. Difference 声明为String 而不是数字类型。 (我猜您目前已将其声明为 Currency 类型。)

    Dim Difference As String
    

    这将确保Format(ProposedValue - AssessedValue, "Currency") 的结果不会被转换回数值以便存储在您的Difference 变量中。

【讨论】:

  • @Mat'sMug 当我第一次发布我的原始评论时,我以为我在教 OP,但后来我注意到他们已经在使用它来设置 Difference,问题是几乎可以肯定DifferenceCurrency 类型。
  • 非常感谢!我使用了方法 1,它解决了我的问题!
猜你喜欢
  • 1970-01-01
  • 2012-03-08
  • 1970-01-01
  • 2011-05-04
  • 1970-01-01
  • 2023-03-14
相关资源
最近更新 更多