Excel 2013 VBA-For Next循环突然停止工作

Excel 2013 VBA-For Next循环突然停止工作,vba,excel,for-loop,next,Vba,Excel,For Loop,Next,我几乎不好意思发布这篇文章,但我目瞪口呆。6个月前,我编写了一个非常简单的For/Next循环,在列的单元格中循环,如果满足某些条件,则执行一个操作。在过去的6个月里,它工作得完美无缺。今天,它停止工作了 当我进入“For”行时,它将x的值设置为零。当它到达“下一个x”行时,它将其递增到1,但随后不循环…而是转到“出错”并完成。我甚至试着在循环之前设置x=2,但同样的事情……它将增加到3,然后退出循环 什么会改变?我甚至回到我的原始文件,并尝试运行它,同样的事情 马修走上了正确的道路。因为这

我几乎不好意思发布这篇文章,但我目瞪口呆。6个月前,我编写了一个非常简单的For/Next循环,在列的单元格中循环,如果满足某些条件,则执行一个操作。在过去的6个月里,它工作得完美无缺。今天,它停止工作了



当我进入“For”行时,它将x的值设置为零。当它到达“下一个x”行时,它将其递增到1,但随后不循环…而是转到“出错”并完成。我甚至试着在循环之前设置x=2,但同样的事情……它将增加到3,然后退出循环


什么会改变?我甚至回到我的原始文件,并尝试运行它,同样的事情

马修走上了正确的道路。因为这条线: LastRow=工作表(“粘贴在此处”)。范围(“A65536”)。结束(xlUp)。行
如果在A65536上方和A32768下方的a列单元格中有某些内容,则VBA只会将x设置为0,循环将不会执行。

LastRow的值是多少(为什么使用
变量而不是
Long
?)?另外,我建议您在错误恢复下一行注释掉
,然后运行代码。当您在不更改x值的情况下单步执行时,
LastRow
中的值是多少?听起来可能很愚蠢-但是
粘贴在此处
工作表的A列中确实有数据吗?不是原因,而是,如果您的数据超过32768行,您将在此处出现一个错误Dim x As Integer,因为这是整数的限制。将其更改为Dim x作为Long。当循环状态为x=2时,为什么将x设置为0?
Sub Button1_Click()
Dim x As Integer
Dim DateCell As String
Dim LastRow As Variant

LastRow = Worksheets("Paste Here").Range("A65536").End(xlUp).Row

On Error Resume Next

For x = 2 To LastRow

    DateCell = Worksheets("Paste Here").Range("A" & x)

    If Right(DateCell, 4) = "2015" Then
      Else
       Worksheets("Paste Here").Range("A" & x).Select
       Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Worksheets("Paste Here").Range("A" & x).Value = Worksheets("Paste Here").Range("A" & x - 1).Value
   End If

Next x

On Error GoTo 0

MsgBox ("Done! " & x & " rows analyzed.")
End Sub