Vba 执行While-溢出错误

Vba 执行While-溢出错误,vba,Vba,此代码查找标题为“分配的数量”的列,然后将列中的字符串转换为小数,即00009102”=9.102 Sub ConvertDec() Dim colNum As Integer Dim i As Integer Dim x As Integer colNum = WorksheetFunction.Match("Quantity Dispensed", ActiveWorkbook.ActiveSheet.Range("1:1"), 0) i = 2 Do While ActiveWorkb

此代码查找标题为“分配的数量”的列,然后将列中的字符串转换为小数,即
00009102”=9.102

Sub ConvertDec()
Dim colNum As Integer
Dim i As Integer
Dim x As Integer

colNum = WorksheetFunction.Match("Quantity Dispensed", ActiveWorkbook.ActiveSheet.Range("1:1"), 0)
i = 2

Do While ActiveWorkbook.ActiveSheet.Cells(i, colNum).Value <> ""
    x = Evaluate(Cells(i, colNum).Value)
    Cells(i, colNum) = Int(x / 1000) + (x Mod 1000) / 1000
    i = i + 1
Loop

End Sub
Sub-ConvertDec()
Dim colNum作为整数
作为整数的Dim i
作为整数的Dim x
colNum=WorksheetFunction.Match(“分配数量”,ActiveWorkbook.ActiveSheet.Range(“1:1”),0)
i=2
在ActiveWorkbook.ActiveSheet.Cells(i,colNum).Value“”时执行
x=计算(单元格(i,colNum).Value)
单元(i,colNum)=Int(x/1000)+(x Mod 1000)/1000
i=i+1
环
端接头
执行时,我在“x=Evaluate…”行上出现溢出错误


列中的值为字符串形式。例如
“000012000”

120000大于整数32768的最大值。请改用长类型


尝试将
Dim x作为整数
更改为
Dim x作为长
。整数的最大值仅为32768。同样,使用
Dim i作为长
更可靠。顺便问一句,是否有任何理由使用
x=Evaluate(Cells(i,colNum).value)
而不是
x=Cells(i,colNum).Value
?列中的值为字符串形式,例如“000012000”“
120000
大于整数的最大值
32768
。改用
Long
类型。而且没有必要使用
评估
,这似乎是问题所在。我读到整数最多可容纳2147483647,但您提到的最大值显然是正确的。它在VB.NET中整数2147483647的最大值,在VBA-32768中