首页 > 解决方案 > 如何正确比较 VBA excel 中的十进制字符?

问题描述

我的代码有问题,因为即使(Me.scrFoilMarkup.Max / BigNum) = i,(例如 1.8=1.8),布尔值仍然返回False。代码也到此结束——这意味着检测i到的程序大于Me.scrFoilMarkup.Max / BigNum1.8=1.8。BigNum(在我的例子中设置为 100,000)的原因是因为用户窗体的滚动条在存储十进制数字时存在问题,因此我将其转换为整数以防止出现此问题。

如果它可能有任何帮助,i被声明为一种Double类型

i = Me.scrFoilMarkup.Min / BigNum
j=0
Do While i <= Me.scrFoilMarkup.Max / BigNum
        ThisWorkbook.Worksheets("Simulation-Chart").Cells(2 + j, 1) = i
        i = i + ((Me.scrFoilMarkup.Max - Me.scrFoilMarkup.Min) / BigNum) / 10
        j= j + 1
Loop

假设Me.scrFoilMarkup.Min / BigNum= 1.3 和Me.scrFoilMarkup.Max / BigNum= 1.8,我需要做的代码是知道它i确实等于Me.scrFoilMarkup.Max / BigNum然后它应该在我的电子表格中打印i如下所示的值以用作我的图表的值。

在此处输入图像描述

用户窗体初始化中的其他代码:

Me.scrFoilMarkup.Min = frmSettings.tbxFoilMarkupLow.Value * BigNum
Me.scrFoilMarkup.Max = frmSettings.tbxFoilMarkupHigh.Value * BigNum
Me.scrFoilMarkup.SmallChange = ((frmSettings.tbxFoilMarkupHigh.Value - frmSettings.tbxFoilMarkupLow.Value) / 40) * BigNum
Me.scrFoilMarkup.LargeChange = ((frmSettings.tbxFoilMarkupHigh.Value - frmSettings.tbxFoilMarkupLow.Value) / 8) * BigNum

在此处输入图像描述

初始参数形式:

在此处输入图像描述

标签: excelvbadecimal

解决方案


你应该使用CDbl()

MyDouble = CDbl(Me.scrFoilMarkup.Min / BigNum) ' Convert result to a Double.

或使用Round

MyDouble = Round((Me.scrFoilMarkup.Min / BigNum),2)

测试

Sub Test()
    sMax = 180000
    sMin = 130000
    BigNum = 100000
    i = sMin / BigNum
    j = 0
    sVar = sMax / BigNum
        Do While Round(i, 2) <= Round(sVar, 2)
            Debug.Print i
                i = i + ((sMax - sMin) / BigNum) / 10
                j = j + 1
        Loop
End Sub

结果

在此处输入图像描述


推荐阅读