Hoe om die Soek-funksie in VBA te gebruik (6 voorbeelde)

  • Deel Dit
Hugh West

Een van die belangrikste en mees gebruikte funksies wat ons in Visual Basic Application (VBA) gebruik, is die Soek-funksie. In hierdie artikel sal ek jou wys hoe jy die VIND-funksie van Excel met behoorlike voorbeelde en illustrasies kan gebruik.

Laai Oefenwerkboek af

Vind funksie in VBA in Excel.xlsm

6 vinnige voorbeelde om die FIND-funksie in VBA te gebruik

Hier het ons het 'n datastel gekry met die Boekname, Skrywers en Pryse van 'n paar boeke van 'n boekwinkel genaamd Martin Bookstore.

Vandag ons doelwit is om verskeie tipes gebruike van die Vind-funksie van VBA uit hierdie datastel te sien.

1. Gebruik die Soek-funksie in VBA met Geen Parameter

Jy kan die Vindfunksie van VBA sonder parameters gebruik.

Dan sal vir 'n spesifieke waarde binne 'n reeks selle soek en die eerste passing wat dit vind, gee.

Kom ons soek die naam “P. B. Shelly” in die kolom Outeur ( C4:C13 ).

Die reël met die Vind-funksie sal wees:

Set cell = Range("C4:C17").Find("P. B. Shelly")

Die volledige VBA-kode sal wees:

VBA-kode:

7805

Uitset:

Dit produseer 'n Makro genoem Vind . As jy die Makro laat loop, sal dit $C$6 terugstuur, die eerste seladres met die naam P. B. Shelly .

Lees meer: Vind binne 'n reeks met VBA inExcel: Sluit presiese en gedeeltelike passings in

2. Pas die Soek-funksie in VBA toe met die Na-parameter (Om vanaf 'n spesifieke sel te begin soek)

Jy kan die Na -parameter gebruik met die Vind-funksie in VBA . Dan sal dit begin soek vir 'n waarde van onder 'n sel binne 'n reeks.

Byvoorbeeld, kom ons begin soek vir die naam "P. B. Shelly” van onder sel C6 .

Die kodereël sal wees:

Set cell = Range("C4:C13").Find("P. B. Shelly", After:=Range("C6"))

En die volledige VBA-kode sal wees:

VBA-kode:

6938

Uitvoer:

Dit sal $C$13 stuur omdat dit van onder af sel C6 begin soek, dit is van sel C7 . So word dit P. B. Shelly in sel C13 eerste.

Lees meer: Hoe om string in 'n Sel Gebruik VBA in Excel

3. Begin die Soek-funksie in VBA deur die Na-parameter om te draai (om op 'n sirkelvormige manier na 'n waarde te soek)

Die Na -parameter met die Vind-funksie soek 'n waarde op 'n sirkelvormige manier

Dit wil sê, dit begin soek van onder 'n sel binne 'n reeks, eindig soek in die reeks, en begin dan weer van die bokant van die reeks.

Kom ons begin byvoorbeeld om die naam “John Keats” van onder sel C8 te soek deur die After parameter te gebruik.

Die reël van kode sal wees:

Set cell = Range("C4:C13").Find("John Keats", After:=Range("C8"))

En dievolledige VBA-kode sal wees:

VBA-kode:

7735

Uitvoer:

Dit sal $C$7 gee omdat dit van onder af sel C8 begin soek, dit is van sel C9 .

Dit vind niks tot by sel C13 nie, so dit begin weer vanaf sel C4 en vind een in sel C7 .

Soortgelyke lesings:

  • Hoe om string met VBA te vind in Excel (8 voorbeelde)
  • Vind presiese passing met behulp van VBA in Excel (5 maniere)
  • Hoe om te vind en te vervang met behulp van VBA (11) Maniere)

4. Gebruik die Soek-funksie in VBA met die LookAt-parameter (vir presiese of gedeeltelike passing)

Jy kan die Vind-funksie in VBA gebruik met die LookAt parameter.

Gebruik LookAt = xlWhole vir 'n Presiese passing, en LookAt=xlPart vir 'n Gedeeltelike pas.

Kom ons probeer byvoorbeeld uitvind of daar enige boek is met die naam “Ode” in die Boeknaam -kolom ( B4:B13 ).

As ons xlWhole in die kodereël gebruik:

Set cell = Range("B4:B13").Find("Ode", LookAt:=xlWhole)

Die uitvoer sal 'n fout wys omdat dit geen presiese passing sal vind nie.

Maar as jy gebruik:

Set cell = Range("B4:B13").Find("Ode", LookAt:=xlPart)

Dan sal dit $B$9 terugstuur, want daar is 'n boek met die naam “Ode” daarin in sel B7 , Ode aan die nagtegaal.

Dus die volledige kode vir die gedeeltelike -wedstrydis:

VBA-kode:

5633

5. Bedien die Soek-funksie in VBA met SearchDirection-parameter (om die rigting van die soektog te spesifiseer)

Jy kan ook die Vind-funksie in VBA gebruik met die SearchDirection -parameter.

Gebruik SearchDirection = xlNext om van Bo na Onder te soek.

En SearchDirection = xlVorige om van Onder na Bo te soek.

Kom ons probeer byvoorbeeld om die Skrywer Elif Shafak in die kolom Outeur te vind ( C4:C13 ).

As ons xlNext in die kodereël gebruik:

Set cell = Range("C4:C13").Find("Elif Shafak", SearchDirection:=xlNext)

Dan sal dit $C$5 teruggee.

Maar as jy gebruik:

Set cell = Range("C4:C13").Find("Elif Shafak", SearchDirection:=xlPrevious)

Dan gee dit $C$11 terug.

Dus die volledige kode vir soek van onder na bo is:

VBA-kode:

5087

6. Soek funksie in VBA met MatchCase-parameter (vir hooflettergevoelige of onsensitiewe passing)

Uiteindelik kan jy die Vind-funksie met die MatchCase -parameter gebruik.

Gebruik MatchCase = True vir 'n hooflettersensitiewe passing , en MatchCase=False vir 'n hoofletter-onsensitiewe passing.

Byvoorbeeld, kom ons probeer om die boek “moeder” in die Boeknaam -kolom ( B4:B13) te vind ).

As ons True in die kodereël gebruik:

Set cell = Range("B4:B13").Find("mother", MatchCase:=True)

Die uitvoer sal 'n fout wys omdat dit sal' vind geenpas.

Maar as jy gebruik:

Set cell = Range("B4:B13").Find("mother", MatchCase:=False)

Dan sal dit $ B$9 want daar is 'n boek met die naam “Moeder” in sel B8 .

Dus die volledige kode vir die hoofletter-onsensitiewe passing is:

VBA-kode:

5414

Gevolgtrekking

Deur hierdie metodes te gebruik, kan jy die Soek-funksie in Visual Basic-toepassing gebruik. Het jy enige vrae? Vra ons gerus.

Hugh West is 'n hoogs ervare Excel-afrigter en ontleder met meer as 10 jaar ondervinding in die bedryf. Hy het 'n Baccalaureusgraad in Rekeningkunde en Finansies en 'n Meestersgraad in Besigheidsadministrasie. Hugh het 'n passie vir onderrig en het 'n unieke onderrigbenadering ontwikkel wat maklik is om te volg en te verstaan. Sy kundige kennis van Excel het duisende studente en professionele persone wêreldwyd gehelp om hul vaardighede te verbeter en uit te blink in hul loopbane. Deur sy blog deel Hugh sy kennis met die wêreld, en bied gratis Excel-tutoriale en aanlyn opleiding aan om individue en besighede te help om hul volle potensiaal te bereik.