gpt4 book ai didi

excel - 如何正确比较 VBA excel 中的十进制字符?

转载 作者:行者123 更新时间:2023-12-04 20:52:16 24 4
gpt4 key购买 nike

我的代码有问题,因为即使 (Me.scrFoilMarkup.Max / BigNum) = i ,(例如 1.8=1.8), bool 值仍然返回 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 的值在我的电子表格中,如下所示用作我的图表的值。

enter image description here

用户窗体初始化中的其他代码:
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

enter image description here

初始参数形式:

enter image description here

最佳答案

尝试将变量和公式作为相同的数据类型和格式进行比较

Dim i As Variant, BigNum As Long

BigNum = 100000

i = Format(Me.scrFoilMarkup.Min / BigNum, "#.0")

Do While i <= Format(Me.scrFoilMarkup.Min / BigNum, "#.0")
i = Format(i + ((Me.scrFoilMarkup.Max - Me.scrFoilMarkup.Min) / BigNum) / 10, "#.0")
Loop

编辑
规避 OP 的小数问题
Dim i As Variant, Mx As Variant, Mn As Variant
Dim BigNum As Long

BigNum = 100000

Mn = Me.scrFoilMarkup.Min
Mx = Me.scrFoilMarkup.Max

i = Mn / BigNum

Do While i <= Mn / BigNum
i = i + ((Mx - Mn) / BigNum) / 10
Loop

关于excel - 如何正确比较 VBA excel 中的十进制字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56555980/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com