Esta macro es un ejemplo útil para ver cómo funciona un ARRAY (grupo de variables) en VBAExcel, en este caso lo utilizaremos para almacenar por separado cada una de las palabras de una frase en una celda.
Por ejemplo la celda A1 contiene la frase PEDIDO NÚMERO 15010, y necesitamos separarlo en tres celdas, con las palabras separadas por espacios. Podemos usar un ARRAY con la función Split(separa palabras).
palarray() = Split(textostring)
Este código lo que hace es crear tres variables:
palarray(1) = PEDIDO
palarray(2) = NÚMERO
palarray(3) = 15010
Ahora sólo necesitamos crear un bucle que se repita tantas veces como palabras tenga la frase.
Para eso utilizamos un For I con LBound y UBound, en este ejemplo va a repetirse 3 veces (tres palabras) y las va a ir mostrando desde las celdas A2 hacia la derecha, para eso usamos la propiedad Offset que va desplazando hacia la derecha las cedas.
Observa como el array palarray(I) según va recorriendo el bucle va mostrando cada una de las palabras
con palarray(1),palarray(2),palarray(3)
For I = LBound(palarray) To UBound(palarray)
Cells(J + 1, 1).Offset(0, I).Value = palarray(I)
Next I
El resultado quedará como la siguiente imagen.
Puedes ejecutar desde el editor de VB esta macro con la opción F8 (paso a paso) para ver cómo va
trabajando el código .
Puedes utilizar este código para el ejemplo.
Sub ejemplosplit2()
‘Esta macro desde la celda A1 separa los datos con el texto donde haya una espacio
‘Definimos las variables
Dim palarray() As String
Dim textostring As String
Dim separado As String
Dim J As Integer
Dim I As Integer
Dim vfila As Integer
‘Obtenemos la última fila rellena
Range(«A1»).Select
Selection.End(xlDown).Select
vfila = ActiveCell.Row
For J = 0 To vfila
‘Almacenamos los datos en la variable textostring con la palabra
textostring = Range(«a1»).Offset(J, 0).Value
‘ Esta variable es un Array que almacenará cada una de las palabras de la
‘ frase que estén separadas por espacio, de esto se encarga la función Split()
palarray() = Split(textostring)
For I = LBound(palarray) To UBound(palarray)
‘Este bucle va rellenado las celdas hacia la derecha con las palabras
Cells(J + 1, 1).Offset(0, I).Value = palarray(I)
Next I
Next J
End Sub
Deja una respuesta