Az Excel VBA-ban a „Find” metódus segítségével kereshetünk egy adott értéket vagy értékek tartományát egy munkalapon. A metódus a Range objektumon alkalmazható, amely egy cellát vagy cellák tartományát jelenti egy munkalapon.
A „Find” szintaxisa
A „Find” metódus használatának szintaxisa a következő:
Range.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)
Paraméter neve | Kötelező / Opcionális | Adat típus | Leírás |
What | Kötelező | Variáns | A keresendő adat. Lehet karakterlánc vagy bármilyen Microsoft Excel adattípus. |
After | Opcionális | Variáns | Az a cella, amely után a keresést el kívánod kezdeni. Ez az aktív cella pozíciójának felel meg, amikor a keresés a felhasználói felületről történik. Az After paraméternek egyetlen cellának kell lennie a tartományban. Ne feledd, hogy a keresés e cella után kezdődik; a megadott cellát nem keresi, amíg a metódus vissza nem tér erre a cellára. Ha nem adja meg ezt az argumentumot, a keresés a tartomány bal felső sarkában lévő cella után kezdődik. |
LookIn | Opcionális | Variáns | A következő XlFindLookIn konstansok egyike lehet: xlFormulas, xlValues, xlComments vagy xlCommentsThreaded. |
LookAt | Opcionális | Variáns | A következő XlLookAt konstansok egyike lehet: xlWhole vagy xlPart. |
SearchOrder | Opcionális | Variáns | A következő XlSearchOrder állandók egyike lehet: xlByRows vagy xlByColumns. |
SearchDirection | Opcionális | Variáns | A következő XlSearchDirection konstansok egyike lehet: xlNext vagy xlPrevious. |
MatchCase | Opcionális | Variáns | True az értéke ha szeretnénk, hogy a keresés megkülönböztesse a kis- és nagybetűket. Az alapértelmezett érték False. |
MatchByte | Opcionális | Variáns | Csak akkor használható, ha kiválasztotta vagy telepítette a kétbájtos nyelvi támogatást. True az értéke ha szeretnénk, hogy a kétbájtos karakterek csak a kétbájtos karakterekkel egyezzenek. False, ha a kétbájtos karakterek megegyeznek az egybájtos megfelelőikkel. |
SearchFormat | Opcionális | Variáns | A keresési formátum. |
A „find” metódus visszatérési értéke, azaz alkalmazásának eredménye a tartományon belül az első cella, ahol a keresett információ megtalálható.
Példa 1
Tegyük fel van egy táblázatunk, aminek az első oszlopában az első 10 sorban nevek vannak. Valahogy így:
Meg szeretnénk találni annak a cellának a pozícióját, ami „Ferencet” tartalmazza, és egy msgBox-ban ki szeretnénk írni azt. Erre a következő makrót tudjuk írni:
Sub find_ferenc() Dim rng As Range Set rng = Worksheets("Munka1").Range("A1:A10").Find("Ferenc") MsgBox rng.Address End Sub
Az eredménye pedig a A7-es cella lesz, amit egy felugró párbeszéd ablakban jelenít meg.
Példa 2
Álljon itt egy összetettebb példa arra, hogyan használhatod az Excel VBA find metódust egy adott érték keresésére egy cellák tartományában:
Sub find_ferenc2() Dim rng As Range Set rng = Range("A1:C10") Dim foundCell As Range Set foundCell = rng.Find(What:="Ferenc", LookIn:=xlValues, LookAt:=xlWhole) If Not foundCell Is Nothing Then MsgBox "Érték megtalálható a(z) " & foundCell.Address & " cellában" Else MsgBox "Az érték nem található" End If End Sub
Ebben a példában a keresendő tartományt „A1:C10”, szóval töltsük fel az üres cellákat is és tegyünk bele még egy „Ference” értéket. A Find metódust használva a keresett érték Ferenc lesz ismét. A „LookIn” paraméter „xlValues” értékre van állítva, hogy az értéket a cella értékei között keresse, és a „LookAt” paraméter „xlWhole” értékre van állítva, hogy a teljes cella tartalma egyezzen meg. Ha az érték megtalálható, akkor a kód egy üzenetablakot jelenít meg a megtalált érték cellájának címével. Ha az érték nem található, akkor a kód egy szintén üzenetablakot jelenít meg, amely azt jelzi, hogy az érték nem található.
Fontos megjegyezni, hogy a Find metódus az első olyan cellát adja vissza, amelyik megfelel a keresési feltételeknek, így ha több cella is megfelel a feltételeknek, akkor mindegyiket egy ciklus segítségével kell megtalálnod. A „For” ciklusról itt olvashatsz bővebben.