Hoe om InStr-funksie in VBA te gebruik (3 maklike voorbeelde)

  • Deel Dit
Hugh West

Terwyl ons met Excel VBA-kodes werk, kom ons 'n paar ingeboude funksies teë wat 'n komplekse taak in 'n klein eenreël-kode omskakel. InStr is so 'n funksie beskikbaar in Excel VBA wat soek na 'n spesifieke string binne 'n ander gegewe string vanaf 'n gegewe posisie. Ek sal vandag wys hoe jy die InStr -funksie in VBA kan gebruik om 'n spesifieke string binne 'n ander gegewe string te soek.

Laai Oefenwerkboek af

InStr Function.xlsm

Inleiding tot VBA InStr Function

  • Opsomming

Soek vir 'n spesifieke string binne 'n gegewe string, vanaf 'n gegewe posisie. As 'n passing vind, gee die posisie in die gegewe string terug van waar die passing begin het.

  • Sintaksis

InStr([begin). ],string1,string2,[vergelyk])

  • Argumente
ARGUMENT VEREISTE BESKRYWING

[begin] Opsioneel Die posisie vanwaar dit sal begin soek. Die verstek is 1.
string1 Vereis Die string waarbinne dit vir 'n gegewe string soek.
string2 Vereis Die string waarna dit in 'n gegewe string soek.
[vergelyk] Opsioneel 'n Numeriese waarde tussen {-1,0,1,2} wat die tipe vergelyking spesifiseer. Dieverstek is -1 (vbUseCompareOption). As die Opsie Vergelyk-stelling nie gespesifiseer is nie, voer Binêre Vergelyking uit.

Let wel:

  • Alhoewel die [begin] -argument en die [vergelyk] -argument is opsioneel, jy benodig die [begin] -argument as jy die [vergelyk] -argument spesifiseer. Andersins sal dit 'n fout veroorsaak.
  • As een of albei van die [begin] -argument en die [vergelyk] -argument Nul<2 is>, sal jy 'n fout in die gesig staar.
  • Die vier gespesifiseerde waardes in die [vergelyk] argument voer vier verskillende tipes vergelykings uit. Hulle word hieronder genoem:
WAARDE KONSTANT BESKRYWING

-1 vbUseCompareOption Voer die vergelyking uit gespesifiseer in die Opsie Vergelyk stelling.
0 vbBinaryCompare Voer 'n Binêre vergelyking uit.
1 vbTextCompare Voer 'n teksvergelyking uit.
2 vbDatabaseCompare Voer 'n vergelyking uit gebaseer op jou databasis .
  • Opsie Vergelyk -stelling is 'n stelling wat verskaf word voordat die hoof-VBA-kode begin. Dit spesifiseer of die kode vir 'n Binêre Vergelyking of Teksvergelyking sal soek wanneer dit vereis word.

Opsie Vergelyk teks

    • In eenvoudige terme , Binêre Vergelyking beteken hooflettergevoeligvergelyking.
    • In eenvoudige terme beteken teksvergelyking hoofletter-onsensitiewe vergelyking.
  • Opbrengswaarde
    • Gee die posisie terug in die string1 waarvandaan die string2 begin het.
    • In geval string2 nie gevind word nie. binne string1 vanaf die begin -posisie, gee 0 terug.
    • As die string1 van nul-lengte is, gee dit 0.
    • As die string2 van nul-lengte is, gee die argument begin terug.
    • En laastens, as enige van die string1 of string2 is Nul , gee 'n fout terug.

3 maklike voorbeelde om VBA InStr-funksie

in te gebruik hierdie afdeling sal ons drie maklike voorbeelde sien van die toepassing van die VBA InStr -funksie in Excel. Kom ons kyk na die eerste voorbeeld van die InStr -funksie in VBA-kodes.

1. Besluit of 'n adres 'n e-posadres is of nie deur VBA InStr-funksie te gebruik

Hier het ons 'n datastel geneem wat 'n paar kontakadresse van kliënte bevat. Ons doel hier sal wees om te identifiseer of die adresse e-posadresse is of nie.

Nou sal ons 'n VBA-kode ontwikkel deur die InStr funksie te gebruik om te identifiseer of dit 'n e-posadres is of nie. Om dit te doen, volg die stappe hieronder.

Stappe:

  • Gaan aan die begin na die Ontwikkelaar -oortjie en kies Visual Basic (Of druk Alt+F11) om die VBA oop te maakvenster.

  • Gaan dan in die VBA -venster na Voeg in > Module .

  • Daarna, op die module, plak die volgende kode:
8843

  • Boonop het ons 'n funksie genaamd DECISION geskep. Dit besluit of 'n adres 'n e-posadres is of nie. Kom ons pas die funksie toe op die datastel wat ons het.
  • Op sel C5 , skryf die volgende formule neer en vul dan die res van die selle outomaties in deur Vulhandvatsel te gebruik.
=DECISION(B5)

  • Soos ons kan sien, het ons elke adres geïdentifiseer of dit 'n e-posadres is of nie.

🎓 Hoe werk die kode?

  • Funksie BESLUIT(string1 As String)

Eers skep dit 'n funksie genaamd DECISION met 'n string-argument genaamd string1 .

  • Donker posisie as heelgetal

Dit verklaar 'n heelgetalveranderlike genaamd Posisie .

  • Posisie = InStr(1, string1, “@”, 0)

Dit ken die waarde van die toe Posisie -veranderlike as die uitvoer van die InStr -funksie met die argumente 1, string1, “@” en 0 . Kortom, dit ken die posisie in die adres toe waar daar 'n “@” is.

  • As Posisie = 0 Dan BESLUIT = “Nie e-pos nie”

Dit ken die uitvoer van die BESLUIT -funksie toe as “Nie e-pos nie” , indien die Posisie veranderlike is 0 , dit beteken dat daar geen “@” in die adres was nie.

(Onthou as enige string nie binne die gegewe string gevind word nie, die InStr -funksie gee 0 terug.

  • Anders BESLUIT = “E-pos”

Dit ken die uitvoer van die BESLUIT -funksie as “E-pos” as daar 'n “@” in die adres was. Dus word die adresse waar die “@” is gekategoriseer as E-pos , en die res word gekategoriseer as “Nie e-pos nie” .

Soortgelyke lesings

  • Hoe om VBA UCASE-funksie in Excel te gebruik (4 voorbeelde)
  • Gebruik MsgBox-funksie in Excel VBA ('n Volledige riglyn)
  • Hoe om VBA SPLIT-funksie in Excel te gebruik (5 voorbeelde)
  • Gebruik LCase-funksie in VBA in Excel (Met 4 Voorbeelde)
  • Hoe om Fix-funksie in Excel VBA te gebruik (4 Voorbeelde)

2. Gebruik VBA InStr-funksie vir Uittrek van die uitbreiding van sommige e-posadresse

Hier het ons 'n lys van sommige e-posadresse van sommige kliënte. Hierdie keer sal ons die uitbreiding van die e-posadres onttrek, soos of hulle gmail.com of yahoo.com het.

Om dit te doen, volg die stappe hieronder.

Stappe:

  • Om mee te begin, soos die vorige metode, maak 'n nuwe VBA<2 oop> module en plak die volgende kode in die venster.
4141

  • Boonop het ons 'n funksie geskep genaamd UITBREIDING . Dit onttrek die uitbreiding van enige e-posadres.
  • Verder, kom ons pas hierdie funksie toe op die datastel wat ons het. Voer eers hierdie formule in op sel C5 en dubbelklik dan op die Vulhandvatsel .
=EXTENSION(B5)

  • Laastens kan ons sien dat ons die uitbreiding van al die e-posse suksesvol onttrek het.

🎓 Hoe werk die kode?

  • Funksie UITBREIDING(E-pos as string)

Dit skep 'n nuwe funksie genaamd UITBREIDING , met 'n string-argument genaamd E-pos .

  • Donker Posisie As Heelgetal

Hierdie deel verklaar 'n heelgetalveranderlike genaamd Posisie .

  • Posisie = InStr(1, Email, “@”, 0)

Dit ken die waarde van die <1 toe>Posisie -veranderlike as die uitvoer van die InStr -funksie met die argumente 1, E-pos, “@” en 0 . Kortom, dit ken die posisie in die E-pos toe waar daar 'n “@” is.

  • UITBREIDING = Reg(E-pos, (Len) (E-pos) – Posisie))

Hierdie deel ken die uitvoer van die UITBREIDING -funksie toe as die karakters na die simbool “@” . Dit is die vereiste uitbreiding van die E-pos .

3. Onttrek die Voor- of Van uit 'n Naam deur VBA InStr-funksie te gebruik

Laastens sal ons 'n unieke ander taak uitvoer. Hierdie keer het ons die name van sommige werknemers vann maatskappy. En ons sal probeer om 'n funksie te bou om óf die voornaam óf die van van die werknemers te onttrek.

Om dit te doen, volg die stappe hieronder.

Stappe:

  • Eerstens, soortgelyk aan metode 1 , plak die kode hieronder in 'n nuwe module in die VBA -venster.
5570

  • Hier het ons 'n funksie genaamd KORTNAAM geskep wat óf die voornaam óf die van uit 'n naam onttrek. Kom ons pas hierdie formule toe op ons datastel.
  • Om eers die voornaam te onttrek, skryf die formule hieronder in sel C5 neer.
=SHORTNAME(B5,-1)

  • Laastens, om die vanne te onttrek, skryf ons die volgende formule in D5 neer:
=SHORTNAME(B5,1)

  • Daarna, as ons die res van die selle outomaties vul met Vul hanteerder , sal ons ons gewenste resultaat sien.

🎓 Hoe werk die kode?

  • Funksie KORTNAAM(Naam As String, Eerste_of_Laaste As Heelgetal)

Dit skep 'n nuwe funksie genaamd KORTNAAM met een String-argument genaamd Naam en een Heelgetal-argument genaamd Eerste_of_Laaste .

  • Dim Break As Heelgetal

Hierdie gedeelte verklaar 'n nuwe heelgetalveranderlike genaamd Break .

  • Break = InStr(1, Name, ” “, 0)

Dit ken die waarde van die Break -veranderlike toe as die uitvoer van die InStr -funksie met die argumente 1, Naam, “ ” en 0 . Kortom, dit ken die posisie in die Naam toe waar daar 'n spasie (“ ”) is.

  • As Eerste_of_Laaste = -1 Dan KORTNAAM = Links(Naam, Breek – 1)

Hierdie reël ken die uitvoer van die KORTNAAM -funksie toe as die karakters voor die spasie , as die Eerste_of_Laaste argument -1 is. Dit is die voornaam.

  • KORTNAAM = Right(Name, Len(Name) – Break)

Hierdie deel ken die uitvoer van die KORTNAAM funksioneer as die karakters na die spasie , as die Eerste_of_Laaste argument 1 is. Dit is die van.

Gevolgtrekking

Op hierdie manier kan jy VBA-kodes skryf met die InStr -funksie wat die posisie van 'n spesifieke string binne 'n ander gegewe uitvind string, en dan kan jy jou eie funksies skep vir 'n verskeidenheid van gebruike. Verder, as jy enige vrae het, 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.