excel - 如何正确比较 VBA excel 中的十进制字符?
问题描述
我的代码有问题,因为即使(Me.scrFoilMarkup.Max / BigNum) = i
,(例如 1.8=1.8),布尔值仍然返回False
。代码也到此结束——这意味着检测i
到的程序大于Me.scrFoilMarkup.Max / BigNum
1.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
初始参数形式:
解决方案
你应该使用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
结果
推荐阅读
- maven - jenkins 错误:无法找到或加载主类 .usr.local.Cellar.maven.3.6.3.libexec
- prolog - ASP 哈密顿循环故事
- python - 在python中的字典中组合列表的所有排列
- xamarin - 在 iOS 设备上调试时 Xamarin Forms 应用程序挂起并退出
- javascript - 无法从 html 表单访问 value 属性 - 未知行为
- python - 如何在循环数据以获取键值之前设置dict索引键?
- maven - IntelliJ 更新 maven 存储库时出错:存储库是非关联的或未编入索引
- yii2 - Yii2 导航栏项目来自数组
- c++ - 在数组中存储 unsigned char 的向量给了我 std::bad_alloc
- spotfire - 更改数据类型不能修复加载错误