使用vba进行查找

时间:2016-05-01 22:42:17

标签: excel vba

我的工作簿中有一个值(变体)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

1 个答案:

答案 0 :(得分:0)

Range.Find method继承了上次使用时的许多参数;通常由用户在工作表上。您应明确指定几个更常用的参数,例如LookAt:xlWholeLookAt:xlPartLookIn:=xlValuesLookIn:=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