我几乎不好意思发布这个,但我傻眼了。 6个月前,我写了一个非常简单的For / Next循环来遍历列的单元格,如果满足某些条件,则执行一个动作。在过去的6个月里,它一直运作良好。今天,它放弃了工作。
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
当我单步执行“For”行时,它将x的值设置为零。当它到达“Next x”行时,它会将其增加到1,但之后不会循环...而是转到“On Error”并完成。我甚至尝试在循环之前设置x = 2,但同样的事情......它将增加到3然后退出循环。
有什么可以改变的?我甚至回到我的原始文件并尝试运行它,同样的事情。
答案 0 :(得分:0)
马修走在正确的轨道上。因为这条线: LastRow =工作表(“粘贴在这里”)。范围(“A65536”)。结束(xlUp)。行 如果在A65536上方的A列和A32768单元下面的单元格中有某些内容,那么VBA只会将x设置为0并且循环将不会执行。