我不清楚你的意思是「停止在第一個實例後執行」。
如果您的意思是宏正在複製> = MinDate的第一行,然後不復制任何其他行,則您顯示的子例程中沒有任何內容會導致該錯誤。但它確實有一些潛在的問題。
該代碼正在測試Cells(I,1)
並在ActiveSheet
上覆制Rows(I)
。如果該工作表每次測試一行時都不是Sheet1,則不會從正確的工作表進行測試或複製。您可以簡單地通過明確說明您正在測試和複製哪個工作表來解決這個問題。
If Sheets("sheet1").Cells(I, 1).Value >= MinDate Then
Sheets("sheet1").Rows(I).Copy Sheets("sheet2").Rows(dest + 1)
End If
我實際上會重新編寫例程以使用工作表對象。我還包含了一些狀態消息,以便您可以查看哪些行正在被複制。
Sub CopyRows()
Dim MinDate As Date, lRow As Long, i As Integer, lDest As Long
Dim shtFrom As Worksheet, shtTo As Worksheet
Set shtFrom = ThisWorkbook.Sheets("sheet1")
Set shtTo = ThisWorkbook.Sheets("sheet2")
MinDate = ThisWorkbook.Sheets("Sheet3").Cells(2, 124).Value
lRow = shtFrom.Cells(Rows.Count, "A").End(xlUp).Row
For i = 2 To lRow
Application.StatusBar = "Row " & i & " of " & lRow
lDest = shtTo.Cells(Rows.Count, "A").End(xlUp).Row
If shtFrom.Cells(i, 1).Value >= MinDate Then
Application.StatusBar = Application.StatusBar & " Copying..."
shtFrom.Rows(i).Copy shtTo.Rows(lDest + 1)
End If
Next i
Application.StatusBar = False
End Sub
如果這不是你遇到的問題,給我們一些更多的細節。
如果您不知道更多詳細信息,您可以通過在VBA屏幕上的宏中按F8,一次只選擇一行。當它以這種方式運行時,如果你將鼠標放在一個變量上,它會告訴你它的當前值是什麼。你可以這樣做來找出代碼中你的問題在哪裏。
您的代碼適用於我。 – bernie 2012-03-23 16:12:09
在日期的第一個實例> =某個日期之後停止。因此,例如,我在第一列中有兩行,分別是3/1/12。但是,代碼只會複製第一個實例,而不是第二個實例。 – VMO 2012-03-23 16:13:53
我剛剛使用包含3/1/12的多個單元格進行了測試,它的工作正常。 – bernie 2012-03-23 16:16:01