簡體   English   中英

VBA按行號刪除特定行

[英]VBA to delete specific rows by row number

如果有人願意幫助我,我將不勝感激。

基本上,我想執行與該線程中的任務相同的任務...

Excel Marcro-根據行號刪除行

我有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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM