根据范围删除行可能的错误

Delete rows based on range possible mistake

我正在尝试根据另一个工作表中的范围删除一个工作表中的行。根据我有限的 VBA 经验,我认为这里的问题可能很简单。这是我写的代码:

Sub LimitedElements()

imax = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row

For i = 2 To imax
    If Sheets("test").Cells(j, 1).Value = Sheets("Limited Elements").Range("A1:A10") Then
    Rows(i).EntireRow.Delete
    End If
Next i

End Sub

我收到一条消息说 "Application-defined or object-defined error"。

谁能告诉我我做错了什么?或者,如果这只是一种愚蠢的方式,我应该以不同的方式来做?

请查看以下内容是否适合您:

Sub LimitedElements()  
Dim imax As Integer  
Dim a As Variant  
Dim b As Range  
Dim c As Object  
Dim d As Integer  

imax = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row

For i = 2 To imax  
a = Sheets("test").Cells(i, 1).Value  
Set b = Sheets("Limited Elements").Range("A1:A10")  
Set c = b.Find(What:=a, LookIn:=xlValues)  

If Not c Is Nothing Then  
    Sheets("test").Rows(i).EntireRow.Delete  
    i = i - 1  
    imax = imax - 1  
    End If  
Next i  
End Sub  

注意到它没有经过微调,旨在让您了解如何处理解决方案。

我添加了代码来减少 i。我想我明白代码无法告诉我指定哪个工作表来删除行,但我不确定该怎么做。我尝试将 "Rows(i).EntireRow.Delete" 更改为 "Sheets("test").Rows(i).EntireRow.Delete" 但我不确定这样做是否正确。

一些额外的细节使事情更清楚:

Sheet "test" 在 A 列中有大约 1000 行具有唯一编号。Sheet "Limited Elements" 在 A 列中有大约 100 行具有唯一编号。我想要它删除 "test" 中 A 列中的值与 "Limited Elements".

中的 A 列值匹配的行
Sub LimitedElements()
imax = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row

For i = 2 To imax

    If Sheets("test").Cells(i, 1).Value = Sheets("Limited Elements").Range("A1:A10") Then
    Sheets("test").Rows(i).EntireRow.Delete
    i = i - 1
    imax = imax - 1
    End If

Next i

End Sub

我认为最初的问题是我有 Cells(j,1) 而不是 cells(i,1)。现在我已经解决了这个问题,但它给了我一个类型不匹配错误,我认为这是由于将单个单元格与一个范围进行比较造成的。

此时我想我迷路了。我不知道如何改变它,让它工作并做我想做的事。