Excel VBA:溢出错误
刚开始用VBA编程,我遇到了一个问题,我不知道如何解决这个问题。我想一切都好。当我要运行此宏时,显示运行时错误“6”溢出Excel VBA:溢出错误,excel,vba,overflow,Excel,Vba,Overflow,刚开始用VBA编程,我遇到了一个问题,我不知道如何解决这个问题。我想一切都好。当我要运行此宏时,显示运行时错误“6”溢出 Sub Działaj() Dim Tablica(1 To 5000) As String Dim Dni() Dim kolumna As Integer Dim wiersz As Integer Dim licznik As Integer Dim PF As Boolean Dim tmp As Integer Dim i As Integer Dim tmp2 A
Sub Działaj()
Dim Tablica(1 To 5000) As String
Dim Dni()
Dim kolumna As Integer
Dim wiersz As Integer
Dim licznik As Integer
Dim PF As Boolean
Dim tmp As Integer
Dim i As Integer
Dim tmp2 As String
licznik = 2
tmp = 0
PF = False
kolumna = 22
wiersz = 2
Do
If Worksheets("Początkowe").Cells(wiersz, kolumna).Value <> vbNullString Then
For i = 1 To licznik
If Worksheets("Początkowe").Cells(wiersz, kolumna).Value = Tablica(i) Then 'debugger shows problem here i guess
PF = True
tmp = i
End If
Next i
End If
If Worksheets("Początkowe").Cells(wiersz, kolumna).Value = "koniec" Then
Exit Do
End If
wiersz = wiersz + 1
Loop
End Sub
Sub-Działaj()
作为字符串的Dim Tablica(1到5000)
Dim Dni()
Dim kolumna作为整数
Dim wiersz作为整数
Dim licznik作为整数
Dim-PF作为布尔函数
将tmp设置为整数
作为整数的Dim i
将tmp2设置为字符串
李茨尼克=2
tmp=0
PF=错误
科卢姆纳=22
维尔兹=2
做
如果工作表(“Początkowe”).单元格(wiersz,kolumna).Value vbNullString则
对于i=1到licznik
若工作表(“Początkowe”).Cells(wiersz,kolumna).Value=Tablica(i),那个么我猜调试器在这里显示了问题
PF=真
tmp=i
如果结束
接下来我
如果结束
如果工作表(“Początkowe”).单元格(wiersz,kolumna).Value=“koniec”,则
退出Do
如果结束
wiersz=wiersz+1
环
端接头
谁能告诉我哪里出错了?非常感谢。如果您在第32767行之前未找到值
koniec
,您的变量wiersz
将达到最大值。如果你想继续过去,你应该重新定义它为长期
您还应该为循环提供一个出口,例如,存在于最后使用的行中。而不是do。。。循环
,我通常使用以下代码:
Dim lLastRow As Long, lWiersz As Long
lLastRow = Cells(Rows.Count, kolumna).End(xlUp).Row
For lWiersz= 1 To lLastRow
Next lWiersz
您需要将Dim对象整数替换为long 像这样 Dim wiersz为整数-->>>Dim wiersz为长
Dim licznik作为整数-->>>Dim licznik作为长1,您没有在Tablica(i)中设置任何值。第二,如果你没有找到koniec的值,那么循环会一直进行,直到你的整数变量wiersz变大,大约32k。你说“你没有在Tablica(i)中设置任何值”是什么意思,你能给我举个例子吗?不要担心“koniec”,它将位于所有列中所有数据的末尾。对不起,关于“koniec”您也是对的:)谢谢。您正在引用
If Worksheets(“Początkowe”).Cells(wiersz,kolumna)。Value=Tablica(i)
,但在该行之前的代码中,您没有为数组赋值,所以Tablica(i)在那个阶段是一个空字符串。现在是。我将填写工作表中的表格数据。是的,谢谢,我是对的,我在表格的和处忘记了“koniec”。我不能设置“如果”来检查单元格是否为空,因为表格中间有一些单元格为空。再次感谢。在这种情况下,我通常做的是for…next,而不是do…循环,请参见附件中的示例