Si me pagas te lo pinto y doy cera
A ver si esto te sirve esto:
He puesto un listbox oculto (List1) para no complicarme. Asegurate de agregarlo.
Código :
Ver originalFunction AutoTexto(ByVal TextoBase As String) As String
Dim PosicionInicio As Long
Dim PosicionFin As Long
List1.Clear
Repite:
PosicionInicio = InStr(PosicionInicio + 1, TextoBase, "{")
If PosicionInicio <> 0 Then
PosicionFin = InStr(PosicionInicio + 1, TextoBase, "}")
If PosicionFin > PosicionInicio Then
List1.AddItem Mid$(TextoBase, PosicionInicio + 1, PosicionFin - PosicionInicio - 1)
TextoBase = Left$(TextoBase, PosicionInicio - 1) & "TextoVariable" & List1.ListCount & Mid$(TextoBase, PosicionFin + 1)
PosicionInicio = 0
GoTo Repite
End If
End If
Dim Opciones() As String
Dim Eleccion As String
Dim F As Long
Randomize Timer
For F = 0 To List1.ListCount - 1
Opciones = Split(List1.List(F), "|")
Eleccion = Opciones(Rnd * UBound(Opciones))
TextoBase = Replace(TextoBase, "TextoVariable" & F + 1, Eleccion)
Next F
AutoTexto = TextoBase
End Function
Para usarlo en un command button pongo el texto origen en un textbox (Text1) y el resultado lo muestro en un msgbox:
Lo ejecuto varias veces para notar los cambios.
Código :
Ver originalPrivate Sub Command1_Click()
MsgBox AutoTexto(Text1.Text) & vbCrLf & AutoTexto(Text1.Text) & vbCrLf & AutoTexto(Text1.Text) & vbCrLf & AutoTexto(Text1.Text) & vbCrLf & AutoTexto(Text1.Text)
End Sub
El tema de incluir opciones dentro de opciones no lo he visto hasta que me ha dado problemas en las pruebas. De momento no se permite.
PD: Este es el texto origen que he usado en las pruebas (dentro del Text1):
Código :
Ver original{Muy buenos días|Hola como andas|Hola como estás}, espero que {sigas|estes} bien.
Te escribo para {invitarte|que vengas|que no faltes} a mi fiesta de fin de año, que se realizará el proximo domingo, en casa.
{No es necesario que traigas nada, simplemente ven y trae a la familia|Ven y trae a la familia}.
{Los esperamos|Te envio un abrazo|Un saludo}
Que se dé bien.