Matrices como recurso para generar datos (output)
También podemos utilizar matrices asociadas a bucles como recurso para generar datos de salida. En realidad no es un procedimiento muy diferente al que empleamos para [facilitar el input] como podremos ver en esta entrada.
En este caso tenemos que dar por supuesto que la matriz de datos cuenta con todos los necesarios, sin entrar en detalles sobre el modo en que llegamos a esta situación (1). Suponemos también que nos enfrentamos a la tarea de automatizar la generación del texto de salida (output) (2) siendo el script el que sigue:
Dim mDatos(7) As String, vTexto As StringDim i As IntegermDatos(0) = "Con fecha"mDatos(1) = "12 de mayo de 2024"mDatos(2) = "en el CP Caudalia"mDatos(3) = "tiene lugar la reunión de tutoría"mDatos(4) = "con la madre"mDatos(5) = "del alumno"mDatos(6) = "Carlos López"
Para reconfigurar los segmentos textuales contenidos en la matriz en un único string (3), usamos el bucle For como sigue
vTexto = ""For i = 0 To UBound(mDatos())vTexto = vTexto & " " & mDatos(i)NextMsgBox (vTexto)
Quede aclarado que MsgBox() suple aquí el procedimiento de escritura del texto resultante en el documento (output), simplificación que me permito por motivos didácticos. Pero lo importante es explicar el funcionamiento del bucle.
- Recorremos la matriz mDatos() desde su inicio (i = 0) hasta su final (UBound(mDatos()) mediante el bucle For (For i = 0 To UBound(mDatos()))...
- Asignando a la variable vTexto el contenido de cada uno de los elementos de la matriz (vTexto = vTexto & " " & mDatos(i))...
- Instrucción en la que quiero incidir en dos detalles:
- La recursividad: en el nuevo ciclo, sobre la variable vTexto escribimos el contenido de la propia variable en el ciclo precedente (vTexto = vTexto & ...)
- El añadido de una cadena vacía como separador entre segmentos (& " " &), que no sería necesaria si cada segmento ya la incluyera como elemento final de su string, solución que no recomiendo.
For i = 0 To UBound(mDatos())If i = 0 ThenvTexto = mDatos(i)ElsevTexto = vTexto & " " & mDatos(i)End IfNext
... en la que mediante un condicional diferenciamos el procedimiento al inicio del ciclo (If i = 0 Then -> vTexto = mDatos(i)) en el que asignamos directamente a vTexto el contenido del primer elemento de la matriz (i = 0) sin el ahora innecesario espacio en blanco, de las siguientes fases del mismo, en las que mantenemos el procedimiento ya explicado (Else -> vTexto = vTexto & " " & mDatos(i)).
NOTAS
(1) Aunque es fácil plantearlo de este modo, en realidad se trata de una cuestión que está cargada de interrogantes, pero ahora simplemente no toca plantearlos.
(2) Supongamos que es parte de la automatización de la composición de un documento
(3) Que reconstruimos sobre la variable vTexto, por lo que inicialmente asignamos a ésta el contenido cadena vacía (vTexto = "") como forma de clarificar el funcionamiento esperado.

No hay comentarios:
Publicar un comentario
Comenta esta entrada