VBA MID-funktion

Excel VBA MID-funktion

VBA MID- funktionen extraherar värdena från mitten av den angivna meningen eller ordet. MID-funktionen är kategoriserad under sträng- och textfunktionen och det är en kalkylbladfunktion som innebär att använda den här funktionen i VBA, vi behöver använda metoden application.worksheet.

Det finns situationer där vi vill extrahera förnamn, efternamn eller mellannamn. I dessa situationer är TEXT-kategoriformler till hjälp för att uppfylla våra krav. Användningen av denna funktion är densamma som för kalkylbladets referens och syntaxen är också densamma.

Syntax

Liksom vår excel MID-funktion har den också i VBA en liknande uppsättning syntaxvärden. Nedan är syntaxen.

  • String to Search: Detta är ingenting annat än vad som är meningen med strängen, dvs. från vilken sträng eller ord du vill extrahera värdena.
  • Startposition: Från vilken position av meningen du vill extrahera. Detta bör vara ett numeriskt värde.
  • Antal tecken som ska extraheras: Hur många tecken vill du extrahera från startpositionen? Detta bör också vara ett numeriskt värde.

Hur använder jag VBA MID-funktionen?

Du kan ladda ner den här VBA MID-funktionsmallen här - VBA MID-funktionsmallen

Exempel nr 1

Antag att du har ordet "Hello Good Morning" och att du vill extrahera "Good" från denna mening. Följ stegen nedan för att extrahera värdet.

Steg 1: Skapa först ett makronamn.

Koda:

 Sub MID_VBA_Example1 () Avsluta Sub 

Steg 2: Förklara en variabel som “STRING”.

Koda:

 Sub MID_VBA_Example1 () Dim Mellanvärde som strängändsub 

Steg 3: Tilldela nu ett värde till denna variabel via MID-funktionen.

Koda:

 Sub MID_VBA_Example1 () Dim MiddleValue As String MiddleValue = Mid (End Sub 

Steg 4: Första argumentet är String dvs. från vilket värde vi vill extrahera. Så vårt värde är "Hello Good Morning".

Koda:

 Sub MID_VBA_Example1 () Dim MiddleValue As String MiddleValue = Mid ("Hello Good Morning", End Sub 

Steg 5: Nästa är vad som är startpositionen för karaktären du vill extrahera. I det här fallet börjar god morgon från en sjunde karaktär.

Obs! Utrymme är också en karaktär.

Koda:

 Sub MID_VBA_Example1 () Dim MiddleValue As String MiddleValue = Mid ("Hello Good Morning", 7 End Sub 

Steg 6: Längd är inget annat än hur många tecken du vill extrahera. Vi måste extrahera fyra tecken här på grund av att ordet ”Bra” har fyra tecken.

Koda:

 Sub MID_VBA_Example1 () Dim MiddleValue As String MiddleValue = Mid ("Hello Good Morning", 7, 4) End Sub 

Steg 7: Vi har slutfört formeln. Låt oss visa resultatet av variabeln i meddelandefältet.

Koda:

 Sub MID_VBA_Example1 () Dim MiddleValue As String MiddleValue = Mid ("Hello Good Morning", 7, 4) MsgBox MiddleValue End Sub 

Steg 8: Kör nu den här koden manuellt eller tryck på F5-tangenten, meddelandefältet ska visa ordet “Bra”.

Produktion:

Exempel 2

Antag att du har ett förnamn och efternamn tillsammans och ordet är “Ramesh, Tendulkar”. Mellan förnamn och efternamn är skiljetecken ett komma (,). Nu behöver vi bara extrahera förnamnet.

Steg 1: Skapa ett makro och definiera en variabel.

Koda:

 Sub MID_VBA_Example2 () Dim förnamn som strängändsub 

Steg 2: Tilldela nu ett värde till denna variabel via MID-funktionen.

Koda:

 Under MID_VBA_Exempel2 () Dim förnamn som sträng Förnamn = mitt (slut sub 

Steg 3: Vår sträng är "Ramesh.Tendulkar", så skriv detta ord.

Koda:

 Sub MID_VBA_Example2 () Dim förnamn som sträng FirstName = Mid ("Ramesh, Tendulkar", End Sub 

Steg 4: Eftersom vi extraherar förnamnets startposition är 1.

Koda:

 Sub MID_VBA_Example2 () Dim förnamn som sträng FirstName = Mid ("Ramesh, Tendulkar", 1, End Sub 

Steg 5: Karaktärens längd kan du ange direkt som 6 men det här är inte det bästa sättet. För att bestämma längden kan vi tillämpa ytterligare en formel som heter Instr.

Koda:

 Sub MID_VBA_Example2 () Dim förnamn som sträng FirstName = Mid ("Ramesh, Tendulkar", 1, InStr (End Sub 

Steg 6: För denna startposition är 1.

Koda:

 Sub MID_VBA_Example2 () Dim förnamn som sträng FirstName = Mid ("Ramesh, Tendulkar", 1, InStr (1, End Sub 

Steg 7: Sträng 1 är vårt namn, dvs. ”Ramesh, Tendulkar”.

Koda:

 Sub MID_VBA_Example2 () Dim förnamn som sträng FirstName = Mid ("Ramesh, Tendulkar", 1, InStr (1, "Ramesh, Tendulkar", End Sub 

Step 8: String 2 what is the separator of first name & last name i.e. comma (,).

Code:

 Sub MID_VBA_Example2()     Dim FirstName As String FirstName = Mid("Ramesh,Tendulkar",1,InStr(1,"Ramesh,Tendulkar",",") End Sub 

Note: Instr function will return how many characters are there in the word “Ramesh, Tendulkar” from the string 1 position to the string 2 positions i.e. until comma (,). So Instr will return 7 as the result including comma (,).

Step 9: Since Instr function returns no., of characters including comma (,) we need to minus 1 character here. So enter -1 after the close of Instr function.

Code:

 Sub MID_VBA_Example2() Dim FirstName As String FirstName = Mid("Ramesh,Tendulkar", 1, InStr(1, "Ramesh,Tendulkar", ",") - 1) End Sub 

Step 10: Now show the value of the variable in the message box.

Code:

 Sub MID_VBA_Example2() Dim FirstName As String FirstName = Mid("Ramesh,Tendulkar", 1, InStr(1, "Ramesh,Tendulkar", ",") - 1) MsgBox FirstName End Sub 

Step 11: Run this code using F5 key or you can run this code manually, we would get the first name in the message box.

Output:

Example #3

Now I will give you one assignment to solve. I have a list of First Name & Last Name.

From this list I want you to extract the first name only. All the best!!!!.

Ok, If you have tried and not able to get the result then below code would help you in this.

Code:

 Sub MID_VBA_Example3()     Dim   i   As Long For i = 2   To  15 Cells(i, 2).Value = Mid(Cells(i, 1).Value, 1, InStr(1, Cells(i, 1).Value, ",") - 1)     Next i End Sub 

Copy & Paste the above code in your module. After copying the code, run this code using the F5 key or you can run manually.

It should give the result like the below.

Things to Remember

  • Length argument in MID function is optional. If you ignore this it will take 1 as the default value.
  • In order to determine the length or starting position use Instr function along with MID function.