Este tutorial demostrará cómo usar la función Mid VBA para extraer caracteres del medio de una cadena de texto.
Función media
Función intermedia Obtener n caracteres
La función VBA Mid devuelve n caracteres de una cadena a partir de la posición m:
123456789 | Sub MidExample_1 ()MsgBox Mid ("ABCDEFGHI", 4, 1) 'El resultado es: "D"MsgBox Mid ("ABCDEFGHI", 4, 2) 'El resultado es: "DE"MsgBox Mid ("ABCDEFGHI", 4, 50) 'El resultado es: "DEFGHI"MsgBox Mid ("ABCDEFG hI", 6, 1) 'El resultado es: "F"MsgBox Mid ("ABCDEFG hI", 6, 2) 'El resultado es: "FG"MsgBox Mid ("ABCDEFG hI", 6, 4) 'El resultado es: "FG h"End Sub |
Función intermedia Obtener n caracteres en una variable
Como se muestra arriba, puede definir una cadena simplemente ingresando texto entre comillas. Pero la función MID también funcionará con variables de cadena. Estos ejemplos extraerán n caracteres de una cadena a partir de la posición m.
12345678 | Sub MidExample_2 ()Dim StrEx As String 'Definir una variable de cadenaStrEx = "ABCDEFGHI"MsgBox Mid (StrEx, 2, 1) 'El resultado es: "B"MsgBox Mid (StrEx, 2, 2) 'El resultado es: "BC"MsgBox Mid (StrEx, 2, 50) 'El resultado es: "BCDEFGHI"End Sub |
Función intermedia Obtener n caracteres de una celda
Las cadenas se pueden definir en código VBA, pero también puede usar valores de celdas. Lea el valor de una celda, manténgalo en una variable de cadena y extraiga n caracteres de ese valor de celda de la hoja de trabajo comenzando desde la posición m.
1234567891011 | Sub MidExample_3 ()Dim StrEx As String 'Definir una variable de cadena'Lea el valor de la celda A1 en la hoja de trabajo Hoja1StrEx = ThisWorkbook.Worksheets ("Sheet1"). Range ("A1"). Value'Para este ejemplo, el valor de la celda A1 es "Que la Fuerza te acompañe"MsgBox Mid (StrEx, 4, 6) 'El resultado es: "la F" (tenga en cuenta el espacio al principio)MsgBox Mid (StrEx, 2, 8) 'El resultado es: "ay la F"MsgBox Mid (StrEx, 3, 4) 'El resultado es: "y th"End Sub |
Función intermedia Reemplazar n caracteres
En los ejemplos anteriores, la función Mid no cambió la cadena original. Devolvió una parte, dejando intacta la cadena original. La función Mid se puede utilizar para reemplazar caracteres en una cadena.
12345678910111213141516171819202122 | Sub MidExample_4 ()Dim StrEx As String 'Definir una variable de cadenaSub MidExample_4 ()Dim StrEx As String 'Definir una variable de cadenaStrEx = "Que la Fuerza te acompañe"Medio (StrEx, 5, 1) = "VWXYZ"El resultado de MsgBox StrEx es: "Que Vhe Horce esté contigo"'La función Mid encontró la posición 5 y reemplazó 1 carácter en la cadena originalStrEx = "Que la Fuerza te acompañe"Medio (StrEx, 5, 3) = "VWXYZ"El resultado de MsgBox StrEx es: "Que VWX Horce esté contigo"'La función Mid encontró la posición 5 y reemplazó 3 caracteres en la cadena originalStrEx = "Que la Fuerza te acompañe"Medio (StrEx, 5, 8) = "VWXYZ"El resultado de MsgBox StrEx es: "Que VWXYZorce esté contigo"'Mid Function encontró la posición 5 e intentó reemplazar 8 caracteres.'"VWXYZ" tiene solo 5 caracteres, por lo que solo se reemplazaron 5 caracteres.End Sub |
Función intermedia Extraer la segunda palabra de una frase
Podemos usar la función VBA Mid con la función VBA Instr para obtener la segunda palabra en un texto.
La función VBA InStr puede devolver la posición de un carácter dentro del texto.
1 | InStr ("Dos palabras", "") 'El resultado es 4 |
Podemos usar InStr para encontrar el primer espacio, luego podemos usar nuevamente InStr comenzando la búsqueda después del primer espacio para encontrar el segundo espacio en el texto. Finalmente, podemos usar la función Mid para extraer la palabra porque conocemos la posición inicial de la segunda palabra y su longitud (la diferencia entre las posiciones de los dos espacios).
12345678910111213141516171819202122232425 | Sub MidExample_5 ()Dim StrEx As String 'Definir una variable de cadenaAtenuar StartPos como enteroAtenuar EndPos como enteroAtenuar SecondWord como cadenaStrEx = "James Earl Jones es actor"StartPos = InStr (StrEx, "")'El resultado es 6'Encuentra la posición del primer espacioEndPos = InStr (StartPos + 1, StrEx, "")'El resultado es 11'Encuentra la posición del segundo espacio comenzando la búsqueda después del primer espacioSecondWord = Mid (StrEx, StartPos + 1, EndPos - StartPos - 1)'Mid extrae los caracteres que comienzan después del primer espacio (StartPos +1)'Mid usa también la longitud de la segunda palabra.'Esa es la diferencia entre las posiciones de los espacios -1MsgBox SecondWordEl resultado es EarlEnd Sub |