Texto aleatorio mezcle cuadro de texto

Existe forma de desordenar aleatoriamente el contenido de un cuadro de texto

Ej. Si el cuadro de texto contiene "CACERES", que otro textbox devuelva "SCEECAR" pero que sea aleatorio que no siga siempre el mismo patrón de desorden.

Respuesta
1

Como le comenta Jacinto, no es fácil, lo que usted quiere es elaborar un anagrama, Le preparé este ejemplo.

Observe la figura en la parte derecha como se descomponen las letras de la palabra indicando la cantidad y las cantidad repetidas.

Al hacer clic sobre el botón Anagrama obtengo lo siguiente:

Lleno los campos con la información y calculo las permutaciones, como puede ver hay 1.260 para la palabrea CACERES. En el campo de color azul me va mostrando cada anagrama.

Por último, como el proceso va alimentando una tabla, ésta la utilizo como origen de datos para el combo box. Igualmente se puede hacer un informe de columnas con la información

No incluyo el código porque es algo extenso. Si desea escríbame a [email protected] y con gusto le envío el ejemplo. Favor colocar en el asunto su pregunta.

1 respuesta más de otro experto

Respuesta
1

Alba: No es una cuestión sencilla la que planteas.

Hace tiempo vi una Función de Daniel Pineault (mis saludos), que creo resuelve el problema.

https://www.devhut.net/2018/07/11/vba-shuffle-a-string/ 

Y si lees el texto del final, vas a necesitar ésta otra función

https://www.devhut.net/2017/02/09/vba-generate-a-random-number-between-two-numbers/ 

Como no dices desde donde vas a llamar a la Función, es dificil sugerirte un método, pero si quieres hacer unas pruebas preliminares necesitas:

1 Formulario

1 Cuadro de Texto que podemos llamar: LaPalabra

1 Cuadro de Texto que puedes nombrarlo como: TxtResult

1 Botón de nombre, por ejemplo: BtnDesordena

En el Evento al hacer Click del Botón:

Private Sub BtnDesordena_Click()
Call ShuffleString(Me.LaPalabra)
End Sub

Al final de la Función de Daniel le has de poner (para esas pruebas a las que me refiero:

Me.TxtResult = ShuffleString

Después del Bucle: For i = 1 To lStringLen >> Justo después del Next I

Un saludo y Feliz año: JTJ

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas