2015-10-05 123 views
0

我幾乎不好意思發佈這個,但我傻眼了。 6個月前,我寫了一個非常簡單的For/Next Loop循環遍歷列的單元格,如果滿足某些條件,則執行一個操作。它在過去6個月裏工作完美無瑕。今天,它停止工作。Excel 2013 VBA - 對於下一個循環突然停止工作


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與零值。當它到達「下一個x」行時,它會將其增加到1,但不會循環...而是轉到「On Error」並結束。我甚至在循環之前嘗試設置x = 2,但同樣的事情....它會增加到3,然後退出循環。

什麼可以改變?我甚至回到我的原始文件,並嘗試運行它,同樣的事情。

+1

「LastRow」的價值是什麼(爲什麼你使用'Variant'而不是'Long'?)?此外,我建議你註釋'On Error Resume Next'行並運行代碼。 – Rory

+0

當你在不改變x的值的情況下執行時,'LastRow'中的值是多少? – MiguelH

+0

聽起來可能聽起來很愚蠢 - 但實際上'Paste Here'表格的列A中有數據嗎? –

回答

0

馬修在正確的軌道上。由於這一行: LastRow =工作表(「粘貼在這裏」)。範圍(「A65536」)。結束(xlUp)。行 如果您在A列上方A65536和A32768下方A列的單元格中有某些內容,將x設置爲0,循環將不會執行。