Vba 当第二张图纸中存在值时,删除整行

Vba 当第二张图纸中存在值时,删除整行,vba,excel,Vba,Excel,我有两张纸:第一张和第二张。我在单元格A3(表1)中有一个值,它不是常数。在sheets2中有许多文件 我想做的是,当单元格A3(Sheet1)中的值与列A(Sheet2)中的值相同时,它将删除查找该值(Sheet2)的整行 这是我的尝试。它不起作用:不删除任何行 If Worksheets("Sheet1").Range("A3").Text = Worksheets("Sheet2").Range("A:A").Text Then Dim f As String f = Wo

我有两张纸:第一张和第二张。我在单元格A3(表1)中有一个值,它不是常数。在sheets2中有许多文件

我想做的是,当单元格A3(Sheet1)中的值与列A(Sheet2)中的值相同时,它将删除查找该值(Sheet2)的整行

这是我的尝试。它不起作用:不删除任何行

If Worksheets("Sheet1").Range("A3").Text = Worksheets("Sheet2").Range("A:A").Text Then
    Dim f As String
    f = Worksheets("Sheet1").Range("A3")        
    Set c = Worksheets("Sheet2").Range("A:A").Find(f)
    Worksheets("Sheet2").Range(c.Address()).EntireRow.Delete
End If

我猜您在
.Find()
中找不到任何东西。因为你没有检查它的
值,所以你不知道。另外,
.Find()
保留上次搜索时设置的所有搜索参数-通过代码或手工在电子表格中进行搜索。虽然只需要
What
参数,但为其设置最关键的参数(如下所述)总是值得的,您可能希望将它们全部设置为确保您确切了解搜索方式

Dim f As String

If Worksheets("Sheet1").Range("A3").Text = Worksheets("Sheet2").Range("A:A").Text Then
  f = Worksheets("Sheet1").Range("A3")
  Set c = Worksheets("Sheet2").Range("A:A").Find(What:=f, Match:=[Part|Whole], _
          LookIn:=[Formula|value])
  if not c is Nothing then
    Worksheets("Sheet2").Range(c.Address()).EntireRow.Delete
  else
    MsgBox("Nothing found")
  End If
End If
查看以查看所有参数及其枚举。

子测试()

将ws设置为工作表

对于x=1到行数。计数

如果ThisWorkbook.Sheets(“Sheet2”).Cells(x,1).Value=ThisWorkbook.Sheets(“Sheet1”).Cells(3,1).Value,则ThisWorkbook.Sheets(“Sheet2”).Cells(x,1).EntireRow.Delete

下一个x


End Sub

您采取的调试步骤可能重复?乍一看,这似乎是因为您的
If
条件将始终为false,但Sheet1的edge情况除外!A3=表2!希望这对你有用,对我也有用。我把整个if语句放在一行。