我有2张:sheet1和sheet2。我在单元格A3(sheet1)中有一个值不是常数。还有很多文件在sheet2。
我想要做的是,当单元格A3(Sheet1)中的值与A列(Sheet2)中的值相同时,它将删除找到此值的整个行(Sheet2)。 / p>
这是我的尝试。它不起作用:没有行被删除。
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
答案 0 :(得分:0)
我的猜测是你找不到.Find()
的任何内容。因为你没有检查is Nothing
你不知道。此外,.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
查看MS docs以查看所有参数及其枚举的内容。
答案 1 :(得分:0)
子测试()
Dim ws As Worksheet
对于x = 1到Rows.Count
如果ThisWorkbook.Sheets(" Sheet2")。Cells(x,1).Value = ThisWorkbook.Sheets(" Sheet1")。Cells(3,1).Value Then ThisWorkbook.Sheets(" Sheet2")。Cells(x,1).EntireRow.Delete
下一个x
End Sub