Her ihtimalde, eşleşme bulunamadı. Böyle bir durumda, Application.Match
bir Excel hata kodunu, yani değeri Error 2042
olan bir Varyant/Hata döndürür (bu, Excel'de #N/A
elde edilmesine karşılık gelir).
Böyle bir Hata değeri, bir String'e dolaylı olarak zorlanamaz (MsgBox
'un beklediği gibi) ve böylece tür uyuşmazlığını alırsınız.
WorksheetFunction.Match
ile aynı Match
işlevinin çağrılabileceğini unutmayın. WorksheetFunction
ile
, hatalar On Error
sözdizimi kullanarak, VBA hata olarak yakalanabilir ele alınır: Tek fark hataları ele için ne kadar olduğunu.
Application
ile, bir Variant içine sarılmış bir Excel hata kodunu döndürürler. Dönen değişkenin bir Hata türü varyantı olup olmadığını görmek için IsError
'u kullanabilirsiniz.
Neden 'Range.Find()' yöntemini kullanmıyorsunuz? – Chrismas007
Görünüşe göre, Bul, genellikle Eşleştirmeden daha yavaş: [fastexcel.wordpress.com] (https://fastexcel.wordpress.com/2011/10/26/match-vs-find-vs-variant-array-vba-performance- shootout /) – Egalth