VBA Excel在逗号后面的2digit上设置变量

use*_*471 1 excel vba excel-vba

我想在逗号后面设置2位数的结果.

有没有快速的方法来做到这一点?因为我首先需要寻找结果.(如果positif:添加"+",则negatif让" - "和null"使它在0.00上)

Dim VariationX as Single
VariationX = 0,5
If VariationX >= 0.01 Then
    VariationXString = "+" & VariationX 
ElseIf VariationX = 0 Then
    VariationXString = "0,00"
End If
VariationXString = Replace(VariationXString, ",", ".")
Run Code Online (Sandbox Code Playgroud)

在这个例子中结果将是"+0.5"但我想要"+0.50",因为在某些情况下,VariationX可能是"10,50","1,20"," - 2.8"或简称为"1".而且我总是需要用逗号后的2位数字.

打算使用InStr,Len和Mid,但这会为此做出很多贡献.

Mat*_*don 7

很抱歉很无聊,但这看起来像是自定义数字格式的工作......

数字格式的结构如下:[positive];[negative];[zero];[text].所以你想要这样的东西:

"+"#,##0.00;"-"#,##0.00;#,##0.00
Run Code Online (Sandbox Code Playgroud)

我得到0.00任何零值,+0.500.5和-0.25-0.2463.

所述表示的值是从不同的.如果你想能够0.5在计算中使用它,将它存储起来"+0.50"会引起麻烦 - 但是将它存储为0.5表示+0.50不会破坏任何东西.


如果需要在代码中解决表示问题(例如,如果您希望以某种形式显示格式化的字符串值TextBox),那么您可以使用该Strings.Format函数来获得相同的结果:

Public Function PrettifyVarianceFigure(ByVal value As Double) As String
    PrettifyVarianceFigure = Strings.Format$(value, _
        IIf(value > 0, "+", vbNullString) & _
        "0" & Application.International(xlDecimalSeparator) & "00")
End Function
Run Code Online (Sandbox Code Playgroud)

您可以Double使用标准转换函数*转换回/往返a :

Debug.Print CDbl(PrettifyVarianceFigure(0.42)) ' outputs 0.42
Run Code Online (Sandbox Code Playgroud)

*我怀疑CDbl会处理非点小数分隔符,因此您可能需要先拨Strings.Replace打电话.

  • <sarcasm>等等......等等......等等,我是Mat的Mug我解决了真正的问题而不是旋转我的车轮试图修复代码.等等等等等等.</ sarcasm> 8P (7认同)