Hola amigos, como estan, espero q muy bine, bueno veran, me gustaria saber como sacar letras alatorias pero que no sean repetidas, un ejemplo de esto seria:
FXKLK-FFF25-CAVDR-12F35-VAL87
entonces asi como se encuentra arriba me gustaria q dicho programa me tirara alatoriamente las letras pero no repetidas tomando en cuenta esos guiones que se encuentran tambien. Espero que ayuden con mi hilo, gracias.
Averigua sobre
- Rnd
- Mid
y desp es cuestion de ingeniarselas
salu2
Nose Si Depronto esto te sirva, todo es cuestion de logica y saber un poco de caracteres Ascii, aqui lo que hize fue generar 5 numeros aleatorios 5 veces he ir componiendo la clave conviertiendo los numero aleatorios (ascii) en caracteres mediante la funcion Chr$
El objetivo es que estudies bien el code todo es cuestion de analisis.... este lo acabo de hacer, no es tan dificil
Private Sub Command1_Click()
Dim MAY As Integer 'Num Aleatorio Letras MAYUSCULAS
Dim Num As Integer 'Num Aleatorio Numeros 0-9
Dim LON As Integer 'Letra O Numero
Dim i As Integer 'Control De Bucle
Dim j As Integer 'Control De Bucle
Dim Clave As String 'Clave Completa XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
For i = 1 To 5
For j = 1 To 5
Randomize
LON = Rnd * 1
If LON = 0 Then 'Si Es Verdadero Se Genera Letra MAYUSCULA
Randomize
MAY = Rnd * 24
MAY = MAY + 65
If j = 5 And i < 5 Then
Clave = Clave + Chr$(MAY) + "-"
Else
Clave = Clave + Chr$(MAY)
End If
Else 'De lo contrario se genera un numero de 0 - 9
Randomize
Num = Rnd * 8
Num = Num + 49
If j = 5 And i < 5 Then
Clave = Clave + Chr$(Num) + "-"
Else
Clave = Clave + Chr$(Num)
End If
End If
Next j
Next i
MsgBox Clave
End Sub
Mira estos enlaces:
http://es.wikipedia.org/wiki/ASCII
http://www.google.com.co/search?hl=es&q=Ascii&meta=
Atentamente,
Juan Manuel Lombana
Medellín - Colombia
no hay ni necesidad de usar ascii,
se puede crear un array cn todos los caracteres que uno quiere que se utilizan y listo.
de esa forma te ahoras la conversion,
es mas simple de lo que uno puede pensar,
el tema es que hay q pensar jajaja xD
salu2 y suerte
Tambien lo pense de esa manera pero con este code es mas facil estudiar y aprender además a nivel de memoria resultaria mas pesado.... :D, tambien se puede hacer con una enumeracion, y un modulo para la comparacion pero ya es cosa de cada quien, realmente lo hize de esta manera por recursividad y aprovechamiento de espacio en pila
Atentamente,
Juan Manuel Lombana
Medellín - Colombia
Private Sub Generar()
Randomize
For x = 1 To 5
For y = 1 To 5
1:
LON = Int(Rnd * 2)
Select Case LON
Case 0 'Genera Letra
L = Int(Rnd * 25) + 65
For pos = 1 To Len(Text1)
If InStr(pos, Text1, Chr$(L)) Then
GoTo 1
End If
Next pos
If y = 5 And x < 5 Then
Text1 = Text1 + Chr$(L) + "-"
Else
Text1 = Text1 + Chr$(L)
End If
Case 1 'Genera Numero
N = Int(Rnd * 10) + 48
For pos = 1 To Len(Text1)
If InStr(pos, Text1, Chr$(N)) Then
GoTo 1
End If
Next pos
If y = 5 And x < 5 Then
Text1 = Text1 + Chr$(N) + "-"
Else
Text1 = Text1 + Chr$(N)
End If
End Select
Next y
Next x
End Sub
Con este code,
genera exactamente lo que pedis, y no se repite nada.
salu2
PD: Lo hice xq taba muy aburrido jaja xD
Gracias amigos los dos ejemplos me funcionarion a la perfeción. bueno entonces damos por cerrado este tema. gracias.