我想要做的是循環通過列A找到空白單元格並複製上面一行中該行的列B和C中的兩個數字在行中的最後一個單元格之後。然後在A列空白刪除行運行時錯誤1004:在VBA循環中的對象範圍失敗的方法
Sub PivotTableLayout()
Dim rng As Range
'Dim row As Range
Dim cell As Range
Set rng = ThisWorkbook.Sheets("CopyPivot").Columns("A")
For Each cell In rng.Rows
If IsEmpty(cell) Then
' Do while is blank
Do While IsEmpty(cell)
'offset one right and copy two cells
ActiveCell.Offset(0, 1).Resize(1, 2).Copy
' offset counter and 1 up
ActiveCell.Offset(-1, 0).End(xlToRight).Offset(0, 1).Select
ActiveSheet.Paste
ActiveCell.Offset(1, 0).Select
ActiveCell.EntireRow.Delete
Loop
End If
Next cell
End Sub
不過,我一直在這條線接收運行時錯誤1004,但它的作品,如果我從代碼中刪除它......我不能找出原因:
ActiveCell.Offset(-1, 0).End(xlToRight).Offset(0, 1).Select
用'cell'替換對'ActiveCell'的所有引用。 –
@ Gary'sStudent謝謝!這工作,但是,現在我的代碼沒有做我想做的事情。如果一個接一個地存在多個空格,則它只執行第一個空白的複製粘貼,然後跳過其餘的空白。 Do while while循環不適合在這裏使用嗎? – erikasoladams
避免使用activeCell或在正確的地方開始。 單元格替換activeCell似乎是正確的,但有問題...您可以看到,刪除後循環中的下列單元格將單元格置於奇怪的狀態,並使您的算法在下面的空單元格中崩潰。 最好的方法是直接使用工作簿中的單元格並避免 設置rng = ... 當刪除單元格範圍內時。 @Mrig作出了溶液 – ruirodrigues1971