VB溢出错误,求代码修改。

运行VB小程序,计算大约10次,程序就报错,显示实时错误“6”溢出,要重启程序才可以正常运行,再运行10次左右再报错,很麻烦,麻烦VB高手帮我修改下错误代码。程序显示的错误之处看图片。所有代码如下,Option ExplicitDim StrTmp() As String, StrLen As Integer, TmpIndex As IntegerPublic Function CompareArrEx(ByVal Arr1 As String, ByVal Arr2 As String, ByVal DelimiTer) As String Dim aStr() As String, bStr() As String, TmpStr As String Dim i As Integer, n As Integer aStr = Split(Arr1, DelimiTer) bStr = Split(Arr2, DelimiTer) For i = 0 To UBound(aStr) StrLen = Len(aStr(i)) ReDim StrTmp(TmpIndex) StrCombin (aStr(i)) TmpStr = Join(StrTmp, DelimiTer) For n = 0 To UBound(bStr) If InStr(TmpStr, bStr(n)) <> 0 Then Exit For Next n If n = UBound(bStr) + 1 Then If CompareArrEx = vbNullString Then CompareArrEx = aStr(i) Else CompareArrEx = CompareArrEx & DelimiTer & aStr(i) End If End If Next iEnd FunctionPrivate Sub StrCombin(ByVal Str As String) Dim i As Integer Dim Tmp As String If Len(Str) = 0 Then If UBound(StrTmp) <> 0 Then StrTmp(TmpIndex) = Mid(StrTmp(TmpIndex - 1), 1, StrLen - Len(StrTmp(TmpIndex))) & StrTmp(TmpIndex) End If TmpIndex = TmpIndex + 1 ReDim Preserve StrTmp(TmpIndex) Exit Sub End If For i = 1 To Len(Str) Tmp = Mid(Str, i, 1) StrTmp(TmpIndex) = StrTmp(TmpIndex) & Tmp StrCombin Replace(Str, Tmp, "") Next End SubPrivate Sub Command1_Click()Text3 = CompareArrEx(Text1.Text, Text2.Text, " ")End Sub

TmpIndex是Integer型,范围是-32768到32767,如果出现“溢出”错误,那就表示TmpIndex的值超出这个范围了。如果是运行多次后才出错,那么最大的可能就是在每次运行时没有把TmpIndex清零,这样累积多次后就超出范围了。如果不是这个问题,那么可以把它改为Long型(最大值可以达21亿多)再试试。追问

我不会改,不懂,麻烦谁会帮我直接改下,或者告诉我,哪里需要替换成别的,代码告诉我谢谢。

追答

需要看到你完整的代码才能给你改。如果想简单地避开溢出错误,可以把第二行的TmpIndex As Integer改为TmpIndex As Long

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-07-25
dim tmpIndex as long 就可以了, 超过integer能表示的最大范围了。追问

我不会改,不懂,麻烦谁会帮我直接改下,或者告诉我,哪里需要替换成别的,代码告诉我谢谢。

追答

看图,这样改:

本回答被提问者采纳
第2个回答  2019-07-25
tmpindex超出integer的定义范围了。把tmpindex定义为long型吧追问

我不会改,不懂,麻烦谁会帮我直接改下,或者告诉我,哪里需要替换成别的,代码告诉我谢谢。

第3个回答  2019-07-26
Dim StrTmp() As String, StrLen As Integer, TmpIndex As Integer
改成
Dim StrTmp() As String, StrLen As Integer, TmpIndex
第4个回答  2019-07-26
把代码贴过来我调试下。

VB溢出错误,求代码修改。
TmpIndex是Integer型,范围是-32768到32767,如果出现“溢出”错误,那就表示TmpIndex的值超出这个范围了。如果是运行多次后才出错,那么最大的可能就是在每次运行时没有把TmpIndex清零,这样累积多次后就超出范围了。如果不是这个问题,那么可以把它改为Long型(最大值可以达21亿多)再试试。

用VB编程时提示错误"溢出"是什么意思
用VB编程时提示错误"溢出"是赋值超出目标(内存)的限制而产生的错误。溢出(错误 6)当赋值超出目标的限制时,就会发生溢出。此错误有以下的原因和解决方法:赋值、计算或数据类型的结果的转换太大,以致于不能在变量类型所允许的范围内表示出来。赋值给足够表示值的范围的类型的变量上。给属性的赋值超过...

vb溢出是什么原因
Dim x As Long x = 2000 * 365 ' 错误: 溢出要解决这个问题,请按如下方式键入该数字:Dim x As Long x = CLng(2000) * 365

求助:很简单的关于long型VB溢出的问题。。。
e = 32768 * 10 '不出错,因为32768是Long型,而运算结果也是Long型 说不上这是VB的Bug,因为其实VB是故意这么做的!原因也很简单,这样做可以节省内存资源以及提高运算速度,这在进行大量的小数据运算(运算结果小于32768的整数运算)时是有非常明显的效果的。要想避免这种错误,你可以强制设定参与...

VB程序错误6 溢出,如何修改
text2.text 里面你打算输入什么数?因为如果里面是空的话 那么A就是0 导致(B ^ 2 * Z * F * T * A) 是0 也就是分母是0 所以溢出

vb 6.0 实时错误“溢出”怎么解决?
问题出在DAT(1) * 256 ,因为你定义DAT(1)为byte型,所以VB会认为DAT(1) * 256 是byte型,因此溢出。这样改:size = size + (DAT(3) * 256 ^ 3 + DAT(2) * 256 ^ 2 + DAT(1) * 256! + DAT(0)) \/ 2。(加一个!号就行。)...

vb出现溢出问题,如何修改
Dim f#, i#, r Dim XP, YP As Double r = 5 '除数不能为零 For i = 0 To 48 Step 3 '循环范围 变量、关键字要用空格隔开 f = i \/ r '改变量 XP = r * Cos(f) '实际x YP = r * Sin(f) '实际y Print XP '输出x Print YP '输出y Next i ...

请VB高手来,为什么百分比计算老出错
有可能是你将数据定义为double求解容易产生溢出错误导致结果错误。改为float即可。即 Private Sub Command1_Click()Dim a As float Dim b As float Dim c As float Let a=Val (Text1.Text)Let b=Val (Text2.Text)Let c=Val (Text3.Text)Text4.Text=a\/(a+b+c)Text5.Text=b\/(a+b+c...

VB实时错误6,溢出
在计算过程中,由于i和6500都是ineteger类型的,所以存放6500*i结果的临时变量也默认为integer型。这时回过来再看当i=6时,6500*i的值是39000,已经超出了integer的范围,所以溢出。修改方法:1.把i定义为long 2.改成xt = 1000 + 6500\/ n*i 3.改成xt = 1000 + 6500 (i \/ n)...

VB运行错误6溢出怎么解决
溢出错误肯定就是你的计算结果超出了数据类型的最大值要求,或者是某个函数的参数类型不符要求造成的。代码太长了,看到就头疼,先简化一下吧:Hx(1) = 0 Hx(2) = 0 Hx(3) = 0 ...Hx(13) = 0 Hx(14) = 0 可以简化为:Erase Hx If plantheight < 10 Then Hx(1) = Hx(1) + ...

相似回答