我的代碼找到預定義範圍「r」中的值爲「Completed」的單元格,但使用For Each Cell和Next Cell命令不會循環代碼找到多個「完成」單元。For Each Cell ... Next Cell Loop Only Only
我錯過了什麼?任何幫助,將不勝感激。
Sub Move_Burn()
Dim Msg As String, Ans As Variant
Msg = "Are you sure you want to move the completed pumps?"
Ans = MsgBox(Msg, vbYesNo)
Select Case Ans
Case vbYes
Dim r As Range, cell As Range, mynumber As Long, r2 As Range
Set r = Range("AR15:AR1000")
Set r2 = Range("AF15:AF1000")
mynumber = 1
For Each cell In r
If cell.Value = "Completed" Then
Range("AT15:BN15").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("AT15:BN15").Interior.ColorIndex = xlNone
End If
If cell.Value = "Completed" Then
cell.Select
cell.Value = "Delete"
Range(ActiveCell, ActiveCell.Offset(0, -20)).Select
Selection.Copy
Range("AT15").Select
ActiveSheet.Paste
Range("BN15").ClearContents
End If
If cell.Value = "Delete" Then
cell.Select
Range(ActiveCell, ActiveCell.Offset(0, -20)).Select
Selection.Delete Shift:=xlUp
End If
Next cell
Case vbNo
GoTo Quit:
End Select
Quit:
End Sub
什麼讓你覺得它不循環?使用F8瀏覽你的代碼,看看它出錯的地方。 –
我應該說,我將這個代碼分配給一個宏。因此,爲了測試它是否移動了多行,我將範圍內的兩個單元格填入「已完成」並按下宏,但只有一個被移動。 – Tom
你正在刪除單元格 - 這是你的問題。刪除循環內的單元格或行時始終向後循環。你的代碼很好,這是你的測試,不足以注意到這個問題。如果填充了50個單元格,您會注意到每個_other_單元格都被刪除。 –