Funkce Excel VBA MID
Funkce VBA MID extrahuje hodnoty ze středu zadané věty nebo slova. Funkce MID je kategorizována pod funkcí String a Text a jedná se o funkci listu, což znamená, že pro použití této funkce ve VBA musíme použít metodu application.worksheet.
Existují situace, kdy chceme extrahovat křestní jméno, příjmení nebo prostřední jméno. V takových situacích jsou vzorce kategorie TEXT užitečné ke splnění našich požadavků. Použití této funkce je stejné jako u odkazu na list a syntaxe je také stejná.

Syntax
Stejně jako naše funkce MID aplikace Excel má i ve VBA podobnou sadu hodnot syntaxe. Níže je uvedena syntaxe.

- Řetězec k vyhledávání: Není to nic jiného než věta řetězce, tj. Z kterého řetězce nebo slova chcete extrahovat hodnoty.
- Výchozí pozice: Z jaké pozice věty chcete extrahovat. Měla by to být číselná hodnota.
- Počet znaků k extrakci: Kolik znaků chcete z počáteční pozice extrahovat? Měla by to být také číselná hodnota.
Jak používat funkci VBA MID?
Příklad č. 1
Předpokládejme, že máte slovo „Hello Good Morning“ a chcete z této věty vytáhnout „Good“. Podle následujících pokynů extrahujte hodnotu.
Krok 1: Nejprve vytvořte název makra.
Kód:
Sub MID_VBA_Example1 () End Sub

Krok 2: Deklarujte proměnnou jako „STRING“.
Kód:
Sub MID_VBA_Example1 () Dim MiddleValue jako řetězec End Sub

Krok 3: Nyní přiřaďte této proměnné hodnotu pomocí funkce MID.
Kód:
Sub MID_VBA_Example1 () Dim MiddleValue jako řetězec MiddleValue = Mid (End Sub

Krok 4: První argument je String, tj. Z jaké hodnoty chceme extrahovat. Naše hodnota je tedy „Dobrý den, dobré ráno.“
Kód:
Sub MID_VBA_Example1 () Dim MiddleValue jako řetězec MiddleValue = Mid ("Hello Good Morning", End Sub

Krok 5: Další na řadě je, jaká je výchozí pozice postavy, kterou chcete extrahovat. V tomto případě, Dobré ráno začíná od 7 th znaků.
Poznámka: Mezera je také postava.
Kód:
Sub MID_VBA_Example1 () Dim MiddleValue jako řetězec MiddleValue = Mid ("Hello Good Morning", 7 End Sub

Krok 6: Délka není nic jiného než kolik znaků chcete extrahovat. Zde musíme extrahovat 4 znaky, protože délka slova „Dobrý“ je 4 znaky.
Kód:
Sub MID_VBA_Example1 () Dim MiddleValue jako řetězec MiddleValue = Mid ("Hello Good Morning", 7, 4) End Sub

Krok 7: Dokončili jsme vzorec. Ukážeme výsledek proměnné v okně se zprávou.
Kód:
Sub MID_VBA_Example1 () Dim MiddleValue jako řetězec MiddleValue = Mid ("Hello Good Morning", 7, 4) MsgBox MiddleValue End Sub

Krok 8: Nyní tento kód spusťte ručně nebo stiskněte klávesu F5, v okně se zprávou by se mělo zobrazit slovo „Dobrý“.

Výstup:

Příklad č. 2
Předpokládejme, že máte společné jméno a příjmení a slovo je „Ramesh, Tendulkar.“ Mezi jménem a příjmením je oddělovací znak čárka (,). Nyní musíme extrahovat pouze křestní jméno.
Krok 1: Vytvořte makro a definujte proměnnou.
Kód:
Sub MID_VBA_Example2 () Dim DimName jako řetězec End Sub

Krok 2: Nyní přiřaďte této proměnné hodnotu pomocí funkce MID.
Kód:
Sub MID_VBA_Example2 () Dim FirstName jako řetězec FirstName = Mid (End Sub

Krok 3: Náš řetězec je „Ramesh.Tendulkar“, zadejte tedy toto slovo.
Kód:
Sub MID_VBA_Example2() Dim FirstName As String FirstName = Mid("Ramesh,Tendulkar", End Sub

Step 4: Since we are extracting the first name starting position is 1.
Code:
Sub MID_VBA_Example2() Dim FirstName As String FirstName = Mid("Ramesh,Tendulkar",1, End Sub

Step 5: Length of the character you can directly enter as 6, but this is not the best way. In order to determine the length, let’s apply one more formula called Instr.
Code:
Sub MID_VBA_Example2() Dim FirstName As String FirstName = Mid("Ramesh,Tendulkar",1,InStr( End Sub

Step 6: For this starting position is 1.
Code:
Sub MID_VBA_Example2() Dim FirstName As String FirstName = Mid("Ramesh,Tendulkar",1,InStr(1, End Sub

Step 7: String 1 is our name, i.e., “Ramesh, Tendulkar.”
Code:
Sub MID_VBA_Example2() Dim FirstName As String 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 a 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 the 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 the below code would help you in this.
Code:
Sub MID_VBA_Example3 () Dim i As Long For i = 2 až 15 buněk (i, 2). Value = Mid (Cells (i, 1) .Value, 1, InStr (1, Cells (i, 1) .Value, " , ") - 1) Další i Konec Sub
Zkopírujte a vložte výše uvedený kód do svého modulu. Po zkopírování kódu spusťte tento kód pomocí klávesy F5, nebo můžete spustit ručně.

Mělo by to dát výsledek jako níže.

Věci k zapamatování
- Argument délka ve funkci MID je volitelný. Pokud to ignorujete, bude jako výchozí hodnota 1.
- K určení délky nebo výchozí polohy použijte funkci Instr spolu s funkcí MID.