String 如何将变量格式化为字符串中的货币

String 如何将变量格式化为字符串中的货币,string,vba,variables,format,currency,String,Vba,Variables,Format,Currency,以下所有操作都发生在If语句中 我有一个变量,差,是两个货币值相减的结果 然后我有另一个变量Message,如下所示: If AssessedValue < ProposedValue Then Difference = Format(ProposedValue - AssessedValue, "Currency") Message = "Average value is " & Difference & " more than t

以下所有操作都发生在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
如果评估值<建议值,则
差异=格式(建议值-评估值,“货币”)
Message=“平均值比当前值大”&差异&”
评估价值。不建议协商。”
其他的
差异=格式(评估值-建议值,“货币”)
Message=“平均值小于当前值”&差异&”
评估价值。建议谈判。”
如果结束
我的问题是,在显示的消息中,差异不会显示为货币,而只是一个未格式化的数字,而不是货币(下面的消息示例) 平均值比当前评估值高21587。不要 建议谈判

在本例中,如何使21587在消息中显示为$21587.00

提前感谢您对此问题的帮助。
Kirk有几种方法可以解决您的问题:

  • 在将其包含在字符串中之前,请使用
    格式“Currency”
    设置差异的格式,例如

    Message = "Average value is " & Format(Difference, "Currency") & " more than the current appraised value. Do NOT recommend negotiations."
    
  • 差异
    声明为
    字符串
    而不是数字类型。(我猜您当前已将其声明为
    货币
    类型。)

    这将确保
    格式(ProposedValue-AssessedValue,“Currency”)
    的结果不会转换回数值,以便存储在
    差异
    变量中


  • 您能否将差异格式化为一个带有2个小数点的数字,并将$添加到消息中的文本中?只需使用
    格式(差异,“货币”)
    ?或者将
    差异
    更改为
    字符串
    数据类型,而不是数字数据类型?(您发布的代码没有显示它是如何声明的,但我假设它是数字的,否则您不会有问题。)您的问题应该包括
    差异
    评估值
    建议值
    变量的声明(
    Dim
    语句),因此,回答者不必猜测重要的上下文。很抱歉没有包括我的声明,差异是一个很长的数据类型,因为我的一些差异可能是数百万美元的金额。下面YowE3K回答的方法1解决了我的问题。再次感谢大家的投入!如果
    Difference
    被声明为
    Long
    ,您需要意识到它永远不会包含美分。如果需要美分,你应该将其声明为
    货币
    (或者如果消息是你唯一使用它的地方,则声明为
    字符串
    。@Mat'smugh当我第一次发布我的原始评论时,我以为我在教OP,但后来我注意到他们已经在使用它设置
    差异
    ,问题几乎可以肯定的是,
    Difference
    是一种
    Currency
    类型。非常感谢!我使用了方法1,它解决了我的问题!
    Dim Difference As String