2016-05-01 62 views
1

我的工作簿中有一個值(變體)strCompany。我想確定此值是否存在於其他工作簿tmp_workbook的A列中。如果它不存在,應該有一個消息框。下面的代碼是否有意義(我在代碼中早先定義了變量tmp_workbook和strCompany)?如果不是,也許你可以建議一個更好的方法?使用vba進行查找

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

Arjun,你能否詳細說明你的問題?你在哪裏遇到困難?我建議使用這些文檔。 Range.Find方法的文檔(狀態)(https://msdn.microsoft.com/EN-US/library/office/ff839746.aspx)如果找不到匹配項,那麼Find將返回「Nothing」。否則,它返回「找到該信息的第一個單元格」 – miha

回答

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