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

时间:2015-07-06 15:10:13

标签: vba excel-vba range rows delete-row

我尝试根据另一个工作表中的范围删除一个工作表上的行。我认为这里的问题可能很简单,基于我有限的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

我收到一条消息说"应用程序定义或对象定义错误"。

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

2 个答案:

答案 0 :(得分:0)

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

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  

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

答案 1 :(得分:0)

我添加了代码来减少我。我想我明白代码无法告诉我指定删除行的工作表,但我不知道如何处理它。我尝试改变"行(i).EntireRow.Delete" to" Sheets(" test")。行(i).EntireRow.Delete"但我不确定这是否正确。

一些额外的细节可以让事情变得更加清晰:

Sheet" test"在A栏中有大约1000行具有唯一编号的工作表。"有限元素"有大约100行,带有唯一的数字列A.我希望它删除" test"中的行。在A列中具有与"有限元素"。

中的列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

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

此时我觉得我只是输了。我无法弄清楚如何改变它以便它起作用并做我想做的事。