删除Microsoft Excel中某个变量行下方

时间:2017-10-26 22:47:38

标签: excel vba excel-vba

我目前有代码,我有一个具有独特业务的数据文件,我编程的vba删除了除了一个之外的所有其他业务。我注意到我所处理的文件的遗留数据位于填充了我需要的数据的行之下,我需要删除它们以使文件变小。

Sub ConstructionTools()
    Dim ARange As Range
    Dim DRange As Range
    Dim ws As Worksheet
    Dim wsB As Worksheet
    Dim filename As String

    Set ws = Sheets("Data")
    Set wsB = Sheets("Macro")
    Set DRange = Nothing

    Application.DisplayAlerts = False
    Application.ScreenUpdating = False

For Each ARange In ws.Range("L1:L28000").Rows
    If ARange(1).Value = "BUILDING CONSTRUCTION" Or ARange(1).Value = "CONSTRUCTION SERVICES" Or ARange(1).Value = "HEAVY & HIGHWAY" Or ARange(1).Value = "HEAVY CIVIL - SPS" Then
        If DRange Is Nothing Then
            Set DRange = ARange
        Else
            Set DRange = Union(DRange, ARange)
        End If
    End If
    Next ARange

    If Not DRange Is Nothing Then DRange.EntireRow.Delete

    With ws.Rows(X & ":" & .Rows.Count).Delete
    End With
End Sub

我从这里How do I delete everything below row X in VBA/Excel?添加了一些代码,但我得到了

  

编译错误无效或不合格的参考

代码在添加此行之前有效

With ws.Rows(X & ":" & .Rows.Count).Delete

如何删除已清理数据后面的行?

1 个答案:

答案 0 :(得分:0)

Option Explicit

Sub ConstructionTools()

'Dim ARange As Range
'Dim DRange As Range
Dim ws As Worksheet
'Dim wsB As Worksheet
'Dim filename As String

Set ws = Sheets("Data")
'Set wsB = Sheets("Macro")
'Set DRange = Nothing

Dim RowIndex as long
Dim Counter as long

With ws.Range("L1:L28000")

Dim RowsToDelete() as string
Redim rowstodelete(1 to .rows)

For rowindex = .rows to 1 step -1

Select case .cells(rowindex,1).value
Case "BUILDING CONSTRUCTION", "CONSTRUCTION SERVICES", "HEAVY & HIGHWAY" Or "HEAVY CIVIL - SPS"

Counter = counter + 1
Rowstodelete(counter) = .cells(rowindex,1).address
End select

Next rowindex

End with

If counter >0 then
Redim preserve RowsToDelete(1 to Counter)

With application
.screenupdating = false
.displayalerts = false
.calculation = xlcalculationmanual
 Ws.range(strings.join(RowsToDelete,",")).entirerow.delete
.screenupdating = true
.displayalerts = true
.calculation = xlcalculationautomatic
End if

End sub

未经测试并写在手机上,抱歉格式不正确。代码尝试将需要删除的所有行的地址添加到数组中,然后尝试一次性删除所有添加的行。