Excel 为什么步骤(-1)给出的是应用程序定义或对象定义的错误,而不是步骤(-2)

Excel 为什么步骤(-1)给出的是应用程序定义或对象定义的错误,而不是步骤(-2),excel,vba,loops,Excel,Vba,Loops,所以我有一个循环的代码,如果有一个特定的状态和一个对应的日期,它将计数1。通常格式如下:状态、日期、状态、日期、状态、日期等 但是,我的数据集已更改为status、date、person、status、date、person、status、date、person等 我以前将步骤(-2)用作,但现在当我更改为步骤(-1)甚至步骤(-3)时,它会给我一个应用程序定义或对象定义的错误 有人知道为什么吗 Sub CheckDates() Dim count As Integer Dim i As I

所以我有一个循环的代码,如果有一个特定的状态和一个对应的日期,它将计数1。通常格式如下:状态、日期、状态、日期、状态、日期等

但是,我的数据集已更改为status、date、person、status、date、person、status、date、person等

我以前将步骤(-2)用作,但现在当我更改为步骤(-1)甚至步骤(-3)时,它会给我一个应用程序定义或对象定义的错误

有人知道为什么吗

Sub CheckDates()


Dim count As Integer
Dim i As Integer
Dim j As Integer


Sheets(1).Select

lastrow = ActiveSheet.Cells(Rows.count, "B").End(xlUp).Row

'have to keep data in a table for this to actually work as it ctrls+left to the table, which will end where the very last text of any row is
lastColumn = ActiveSheet.Cells(1, Columns.count).End(xlToLeft).Column


count = 0
i = 2
j = lastColumn

For i = 2 To lastrow
For j = lastColumn To 1 Step (-1)
If Sheet1.Cells(i, j) < Sheet2.Cells(1, 1) And Sheet1.Cells(i, j - 1) = "Reçu" Then
    count = count + 1
    GoTo NextIteration
End If
Next j
NextIteration:
Next i

Sheet2.Cells(1, 7) = count

Sheets(2).Select

Call DeleteSAC
'Runs the DeleteSAC Macro


End Sub
子检查日期()
将计数设置为整数
作为整数的Dim i
作为整数的Dim j
第(1)页。选择
lastrow=ActiveSheet.Cells(Rows.count,“B”).End(xlUp).Row
“必须将数据保存在表中,这样才能实际工作,因为它将ctrls+左移到表中,这将在任何行的最后一个文本所在的位置结束
lastColumn=ActiveSheet.Cells(1,Columns.count).End(xlToLeft).Column
计数=0
i=2
j=最后一列
对于i=2到最后一行
对于j=1步骤的最后一列(-1)
如果Sheet1.Cells(i,j)
看这一行
如果Sheet1.单元格(i,j)

如果j=1,则j-1将为0,您将得到错误(即不存在第0列)


使用
步骤-2
不会出现错误,因为(如果我必须猜测的话)列数是偶数,即j的最后一个值是2。在下一次迭代中,j将是0,循环体将根本不执行,因此没有错误。

Mm,我明白了。。这方面有什么办法吗?我的印象是,如果我到了行中的第一列,那么它将循环到第三行,依此类推。我建议在if之前打印I和j,以便每次迭代都能看到发生了什么。有更好的方法可以做到这一点,但只需做最小的改动——我认为j=lastColumn-1到2步骤-3的改动
。我假设带日期的第一列是B,即第2列。通常使用Exit For来代替Goto NEXTILATION。ActiveSheet是第三张还是实际上是Sheet1?