使用vba进行查找

我在工作簿中有一个值(variant) strCompany 。 我想确定此值是否存在于其他工作簿tmp_workbook的A列中。 如果不存在,应该有一个消息框。 下面的代码是否有意义(我在代码中定义了variablestmp_workbook和strCompany)? 如果不是,也许你可以build议一个更好的方法?

 On Error GoTo ErrorHandler Set value_exists_in_table = tmp_workbook.ActiveSheet.Range("A1:A100000").Find(strCompany) ErrorHandler: Select Case Err.Number Case 9, 91 MsgBox "The company " & strCompany & " was not found." Exit Sub End Select 

Range.Find方法inheritance了上次使用的许多参数, 通常由工作表上的用户来完成。 您应该明确指定几个更常用的参数,如LookAt:xlWholeLookAt:xlPartLookIn:=xlValuesLookIn:=xlFormulas

我通常远离。find一个单一的行或列中的确切匹配。 Excel应用程序对象的本机MATCH函数在查找值方面做了很好的工作。

 dim rw as variant with worksheets("Sheet1") rw = application.match(strCompany, .Columns(1), 0) if not iserror(rw) then value_exists_in_table = .cells(rw, 1).value debug.print value_exists_in_table & " found in row " & rw else debug.print "The company " & strCompany & " was not found." end if end with