我的工作簿中有一个值(变体)strCompany
。我想确定此值是否存在于另一个工作簿的列A中,tmp_workbook。如果它不存在,则应该有一个消息框。下面的代码是否有意义(我在代码中先前定义了变量tmp_workbook和strCompany)?如果不是,你可以建议一个更好的方法吗?
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
答案 0 :(得分:0)
Range.Find method继承了上次使用时的许多参数;通常由用户在工作表上。您应明确指定几个更常用的参数,例如LookAt:xlWhole
或LookAt:xlPart
和LookIn:=xlValues
或LookIn:=xlFormulas
。
我通常远离。查找单行或列中的完全匹配。 Excel Application对象的原生MATCH function可以很好地定位值。
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