Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA:溢出错误_Excel_Vba_Overflow - Fatal编程技术网

Excel VBA:溢出错误

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

刚开始用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 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…循环,请参见附件中的示例