VBA Excel删除具有特定值的行

VBA Excel删除具有特定值的行,vba,excel,Vba,Excel,我需要删除带有订单号的表中的特定行。当我将此代码放入Excel时,它会删除整个表。我想要的是只删除特定的行。tbxOrder是一个文本框。我希望当文本框等于x命令号时,代码将选择“分页”表(第20列)中具有相同编号的所有行,然后删除它们。谢谢:) 在没有列表行的情况下尝试它;请改用DataBodyRange。从下到上工作,否则在删除行时可能会跳过行 Option Explicit Public Sub DeleteOrderRows() Dim strNoOrder As Strin

我需要删除带有订单号的表中的特定行。当我将此代码放入Excel时,它会删除整个表。我想要的是只删除特定的行。tbxOrder是一个文本框。我希望当文本框等于x命令号时,代码将选择“分页”表(第20列)中具有相同编号的所有行,然后删除它们。谢谢:)


在没有列表行的情况下尝试它;请改用DataBodyRange。从下到上工作,否则在删除行时可能会跳过行

Option Explicit

Public Sub DeleteOrderRows()

    Dim strNoOrder As String
    Dim strNoFunction As String, noOrder As String
    Dim noCommande As Integer
    Dim i As Long, tbxOrder As Range
    Dim tblPagination As ListObject

    Set tblPagination = Worksheets("Pagination").ListObjects.Item("tblPagination")

    'here I had to set tbvOrder and assign noOrder
    Set tbxOrder = Worksheets("Pagination").Cells(1, "A")
    noOrder = tbxOrder.Value

    With tblPagination.DataBodyRange.Columns(20).Cells
        For i = .Count To 1 Step -1
            Debug.Print .Cells(i).Address(0, 0)
            strNoOrder = .Cells(i).Value2

            If strNoOrder = noOrder Then
                .Cells(i).EntireRow.Delete
            End If

        Next i
    End With

End Sub
另一种选择:

Public Sub DeleteOrderRows()
Dim rngToDelete As Range
Set rngToDelete = Nothing

Dim tblPagination As ListObject
Set tblPagination = Worksheets("Pagination").ListObjects.Item("tblPagination")

Dim strNopage As String
Dim strNoOrder As String

For Each currentRow In tblPagination.ListRows
    strNoOrder = currentRow.Range.Cells(1, 5).Value
    strNopage = tbxPage.Value
    If strNoCommande = strNopage Then
        If rngToDelete Is Nothing Then
            Set rngToDelete = currentRow.Range
        Else
            Set rngToDelete = Union(rngToDelete, currentRow.Range)
        End If
    End If
Next

If Not rngToDelete Is Nothing Then
    rngToDelete.Delete Shift:=xlUp
End If

End Sub

这就是你的全部代码吗?您缺少一个
下一行
和一个
结束If
。。。另外,当您执行
srcrow.Range.Cells(1,20)
(如果
.Range.Cells()
有效),您指的是
srcrow
中的相对
单元格(1,20)
。这就是你的意思吗?是否未收到任何错误??是Excel VBA运行时错误“424”:EntireRow.Delete处需要对象。这可能与
srcrow.EntireRow.Delete一样简单。出现相同的运行时错误。。。
Public Sub DeleteOrderRows()
Dim rngToDelete As Range
Set rngToDelete = Nothing

Dim tblPagination As ListObject
Set tblPagination = Worksheets("Pagination").ListObjects.Item("tblPagination")

Dim strNopage As String
Dim strNoOrder As String

For Each currentRow In tblPagination.ListRows
    strNoOrder = currentRow.Range.Cells(1, 5).Value
    strNopage = tbxPage.Value
    If strNoCommande = strNopage Then
        If rngToDelete Is Nothing Then
            Set rngToDelete = currentRow.Range
        Else
            Set rngToDelete = Union(rngToDelete, currentRow.Range)
        End If
    End If
Next

If Not rngToDelete Is Nothing Then
    rngToDelete.Delete Shift:=xlUp
End If

End Sub