我正在尝试制作一个宏,它将查看工作表 2 上的列表并在工作表 1 上查找相同的值。如果/当它找到它时,它将删除工作表 1 上的行。然后它将在底部结束表 2。任何建议都会有所帮助,谢谢!
问问题
165 次
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 回答