Keresés a „Find” metódussal Excel VBA-ban

Keresés "find" metódussal Excel VBA-ban

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 neveKötelező / OpcionálisAdat típusLeírás
WhatKötelezőVariánsA keresendő adat. Lehet karakterlánc vagy bármilyen Microsoft Excel adattípus.
AfterOpcionálisVariánsAz 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.
LookInOpcionálisVariánsA következő XlFindLookIn konstansok egyike lehet: xlFormulas, xlValues, xlComments vagy xlCommentsThreaded.
LookAtOpcionálisVariánsA következő XlLookAt konstansok egyike lehet: xlWhole vagy xlPart.
SearchOrderOpcionálisVariánsA következő XlSearchOrder állandók egyike lehet: xlByRows vagy xlByColumns.
SearchDirectionOpcionálisVariánsA következő XlSearchDirection konstansok egyike lehet: xlNext vagy xlPrevious.
MatchCaseOpcionálisVariánsTrue 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.
MatchByteOpcionálisVariánsCsak 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.
SearchFormatOpcionálisVariánsA 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.

Mennyire találtad hasznosnak ezt cikket?
[Összes szavazat: 1 Átlag értékelés: 5]