Función VBA MID

Función Excel VBA MID

La función VBA MID extrae los valores del medio de la oración o palabra proporcionada. La función MID está categorizada bajo la función String and Text y es una función de hoja de trabajo, lo que significa que para usar esta función en VBA, necesitamos usar el método application.worksheet.

Hay situaciones en las que queremos extraer el nombre, apellido o segundo nombre. En esas situaciones, las fórmulas de categoría de TEXTO son útiles para cumplir con nuestros requisitos. El uso de esta función es el mismo que el de la referencia de la hoja de trabajo y la sintaxis también es la misma.

Sintaxis

Al igual que nuestra función de Excel MID, en VBA también tiene un conjunto similar de valores de sintaxis. A continuación se muestra la sintaxis.

  • Cadena para buscar: Esto no es más que la oración de la cadena, es decir, de qué cadena o palabra desea extraer los valores.
  • Posición inicial: desde qué posición de la oración desea extraer. Debe ser un valor numérico.
  • Número de caracteres para extraer: desde la posición inicial, ¿cuántos caracteres desea extraer? Este también debería ser un valor numérico.

¿Cómo utilizar la función VBA MID?

Puede descargar esta plantilla de función VBA MID aquí - Plantilla de función VBA MID

Ejemplo 1

Suponga que tiene la palabra “Hola buenos días” y desea extraer “Bien” de esta oración. Siga los pasos a continuación para extraer el valor.

Paso 1: primero cree un nombre de macro.

Código:

 Sub MID_VBA_Example1 () End Sub 

Paso 2: Declare una variable como "STRING".

Código:

 Sub MID_VBA_Example1 () Dim MiddleValue As String End Sub 

Paso 3: Ahora asigne un valor a esta variable a través de la función MID.

Código:

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

Paso 4: El primer argumento es String, es decir, del valor que queremos extraer. Así que nuestro valor es "Hola buenos días".

Código:

 Sub MID_VBA_Example1 () Dim MiddleValue As String MiddleValue = Mid ("Hola buenos días", End Sub 

Paso 5: El siguiente paso es cuál es la posición inicial del personaje que desea extraer. En este caso, Buenos días comienza con un séptimo carácter.

Nota: el espacio también es un carácter.

Código:

 Sub MID_VBA_Example1 () Dim MiddleValue As String MiddleValue = Mid ("Hola buenos días", 7 End Sub 

Paso 6: La longitud no es más que la cantidad de caracteres que desea extraer. Necesitamos extraer 4 caracteres aquí porque la longitud de la palabra "Bueno" es de 4 caracteres.

Código:

 Sub MID_VBA_Example1 () Dim MiddleValue As String MiddleValue = Mid ("Hola buenos días", 7, 4) End Sub 

Paso 7: Hemos completado la fórmula. Muestremos el resultado de la variable en el cuadro de mensaje.

Código:

 Sub MID_VBA_Example1 () Dim MiddleValue As String MiddleValue = Mid ("Hola buenos días", 7, 4) MsgBox MiddleValue End Sub 

Paso 8: Ahora ejecute este código manualmente o presione la tecla F5, el cuadro de mensaje debería mostrar la palabra "Bueno".

Salida:

Ejemplo # 2

Suponga que tiene un nombre y un apellido juntos y la palabra es "Ramesh, Tendulkar". Entre el nombre y el apellido, el carácter de separación es una coma (,). Ahora solo necesitamos extraer el primer nombre.

Paso 1: crea una macro y define una variable.

Código:

 Sub MID_VBA_Example2 () Dim FirstName As String End Sub 

Paso 2: Ahora asigne un valor a esta variable a través de la función MID.

Código:

 Sub MID_VBA_Example2 () Dim FirstName As String FirstName = Mid (End Sub 

Paso 3: Nuestra cadena es "Ramesh.Tendulkar", así que ingrese esta palabra.

Código:

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

Paso 4: Dado que estamos extrayendo la posición inicial del primer nombre es 1.

Código:

 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 lets 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 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.