0

我正在尝试制作一个宏,它将查看工作表 2 上的列表并在工作表 1 上查找相同的值。如果/当它找到它时,它将删除工作表 1 上的行。然后它将在底部结束表 2。任何建议都会有所帮助,谢谢!

4

1 回答 1

0

最好的方法是遍历工作表 2 上的值。在每个值上,检查它是否存在于工作表 1,如果存在,则删除该行。

关键在于你如何构建你的循环,以及你如何为意想不到的事情做计划。如果在表 1 上多次列出相同的值,您的代码将如何处理?如果表 1 中有空白点怎么办?

我的建议是使用内置函数,例如.Find方法。这可以跳过意想不到的空格,并且可以很容易地被多次调用。通过在 VBA 编辑器中按F1可以找到有关此方法和其他方法的更多信息,或者您可以查看此处

正如其他地方所指出的,避免使用.Select也是一种很好的做法。


为了让您开始,这里是可能的概述,查看 Sheet2 第 1 行到第 3 行中的信息,并替换 Sheet1 第 1 行到第 10 行中的这些值:

Public Sub delete_selected_rows()

'look at sheet2, A1 through A3 for search values
For Each search_value In Worksheets(2).Range("A1:A3")
  'as long as there is something to delete...
  Do While Not Worksheets(1).Range("A1:A10"). _
  Find(search_value.Value, lookat:=xlWhole) Is Nothing
    '...delete that row
    Worksheets(1).Range("A1:A10").Find(search_value.Value, _
    lookat:=xlWhole).EntireRow.Delete
  Loop
Next

End Sub
于 2013-09-10T15:39:47.917 回答