這是另一個問題,我覺得有一個簡單的答案,但我沒有找到它。我遍歷D列中的每個單元格並尋找特定日期(來自用戶輸入),並基於該單元格的日期和某些相應單元格中的日期,我正在更改該行的顏色。如何循環訪問特定列中的單元格並根據其內容刪除整行?
相反着色排的,我希望能夠將其刪除。
這裏是我的代碼,目前顏色的那些行:
Range(Cells(2, 4), Cells(Rows.Count, 4).End(xlUp)).Select
Dim rCell, otherCell As Range
Dim TheAnswer$
Dim ConvertedDate#
TheAnswer = InputBox("In M/D/YY format, enter the first day of the month for which this report is being run." & _
vbCr & vbCr & "For example, you would enter ""12/1/2012"" for the December 2012 report.", "Enter Date M/D/YY")
ConvertedDate = CDate(TheAnswer)
For Each rCell In Selection
If rCell.Value <> "" Then
If rCell.Value And rCell.Offset(, 5) < ConvertedDate And rCell.Offset(, 5) <> "" Then rCell.EntireRow.Interior.Color = RGB(255, 102, 0)
If rCell.Value < ConvertedDate And rCell.Offset(, 5) = "" Then
If rCell.Offset(, 6) < ConvertedDate And rCell.Offset(, 6) <> "" Then rCell.EntireRow.Interior.Color = RGB(255, 102, 0)
If rCell.Offset(, 7) < ConvertedDate And rCell.Offset(, 7) <> "" Then rCell.EntireRow.Interior.Color = RGB(255, 102, 0)
End If
End If
Next rCell
當我與rCell.EntireRow.Delete
替代rCell.EntireRow.Interior.Color = RGB(255, 102, 0)
我得到的錯誤。如果我單步執行代碼,我可以看到它實際上刪除了第一行,但是在下一行發現了錯誤。
我明明有多個「如果那麼」語句,但是如果第一個「如果那麼」條件被滿足,並且行被刪除,就應該移動到下一個單元格。在我看來,它仍然試圖檢查那個被刪除的行。我絕對不是Excel VBA專家,但我認爲應該在rCell.EntireRow.Delete
之後添加一些內容,以告訴它移動到下一個單元格。我試過在Next rCell
中加入,但是出錯了。 Exit For
只是完全停止宏。
這將是很有用的,看你的數據更詳細。刪除行(手動或使用VBA)的一種有效方法是在每行返回TRUE或FALSE時設置布爾IF測試,如果滿足刪除條件,則使用'Autofilter'刪除滿足的條件。範圍循環可能非常緩慢 – brettdj
我的電子表格沒有什麼特別之處。它基本上只是D-K列中的日期列表。我不熟悉'Autofilter',所以我想我不得不考慮這一點。從上面的代碼可以看出,我最初的方法是更改行顏色。我也在想我也可以(或者)向其中一個單元格添加某些內容,然後刪除所有添加了內容的單元格的行。 – Mike