[英]VBA to delete specific rows by row number
如果有人願意幫助我,我將不勝感激。
基本上,我想執行與該線程中的任務相同的任務...
我有3500多行的列表,偶爾需要根據行號刪除大約25-30(非連續)行(行號每次都會有所不同)。 我想在Sheet2(在A列中)上列出(要刪除的)行號,並讓代碼自動讀取Sheet2上的行號,並從Sheet1中刪除這些行。 我嘗試了線程中提供的代碼,但收到了“運行時錯誤424”對象。 如果我將鼠標懸停在錯誤上,它會告訴我“ SourceWks = Nothing”和“ Sheet2 = Empty”。 我確實在工作表中包含數據。 我確定我只是缺少一些簡單的東西。
我將在下面粘貼我正在使用的代碼(同樣,它來自用戶報告的正常工作的原始線程)...
Dim deleteRows As Range
Dim data() As Variant
Dim i As Double
Dim SourceWks As Worksheet, deleteWks As Worksheet
Set SourceWks = Sheet2
Set deleteWks = Sheet1
With SourceWks
data = .Range(.Cells(1, 1), .Cells(1, 1).End(xlDown))
End With
Set deleteRows = deleteWks.Rows(data(1, 1))
For i = 2 To UBound(data, 1)
Set deleteRows = Union(deleteRows, deleteWks.Rows(data(i, 1)))
Next i
deleteRows.Delete Shift:=xlUp
我已經嘗試過兩種方法……保持Sheet1命名為“ Sheet1”,Sheet2命名為“ Sheet2”,並且還嘗試將工作表更改為“ deleteWKS”和“ SourceWks”,所有結果相同。
如果有人可以讓我知道我做錯了什么,那我將非常感激。
考慮:
Sub rowKiller()
Dim SourceWks As Worksheet, deleteWks As Worksheet
Dim rng As Range, i As Long
Set SourceWks = Sheet2
Set deleteWks = Sheet1
Set rng = SourceWks.Columns(1).SpecialCells(2)
rng.Sort Key1:=rng(1), Order1:=xlDescending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
For Each r In rng
i = r.Value
deleteWks.Rows(i).EntireRow.Delete
Next r
End Sub
筆記:
之所以對行列表進行降序排序是因為我們要從底部向上刪除Sheet1中的行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.