Excel 2013 VBA-For Next循环突然停止工作
我几乎不好意思发布这篇文章,但我目瞪口呆。6个月前,我编写了一个非常简单的For/Next循环,在列的单元格中循环,如果满足某些条件,则执行一个操作。在过去的6个月里,它工作得完美无缺。今天,它停止工作了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,然后退出循环 什么会改变?我甚至回到我的原始文件,并尝试运行它,同样的事情 马修走上了正确的道路。因为这
当我进入“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