Quote Originariamente inviata da renygade Visualizza il messaggio
Ciao
A parte che hai scritto codice assolutamente ridondante.. Non sai che si può accede a ogni singolo controllo contenuto nel form con un index? Questo permette di ciclarli e fare le dovute operazioni senza scrivere tutto quel codice.
Al di la di ciò, per evitare doppi dovresti fare la verifica man mano che crei la stringa random.
Un modo potrebbe essere quello di creare un array con le lettere ad esempio, estrai un index, "peschi" una lettera dall'array e poi elimini quel item dall'array. In questo modo sarà impossibile che ti esca random di nuovo quella lettera.. Non so se mi sono spiegato.. Un po come con il sacchetto dei numeri della tombola. Estrazione casuale senza ripetizione..
Navigando qui e li ho trovato la soluzione non era così banale! la funzione che segue sfrutta il principio del mazzo di carte!

codice:
 Public Function rndNumber() As Integer
        Const N As Integer = 23 'ultimo numero generabile, intervallo (0...N)
        Static X(0 To N) As Integer 'il vettore con i numeri casuali
        Static pr As Integer 'l'indice progressivo del numero da restituire
        Dim i As Integer, j As Integer, s As Integer, v As Integer

        If pr = 0 Then
            'e' la prima chiamata o abbiamo esaurito i numeri: inizializziamo!
            For i = 1 To N
                X(i) = i 'memorizziamo in X() i numeri, per ora in ordine...
            Next
            Randomize()
            For v = 1 To 3 'numero di "smazzate" per mischiare per bene
                For i = 1 To N 'il numero d'ordine i lo scambiamo...
                    j = Int(Rnd() * (N + 1)) ' con quello j, scelto a caso
                    s = X(i)
                    X(i) = X(j)
                    X(j) = s
                Next 'per tutti i numeri nel "mazzo"
            Next 'ripetiamo per il numero di "smazzate"
            'OK, ora i numeri sono in ordine "casuale"
            rndNumber = X(0) 'restituiamo il primo della lista
            pr = 1 'l'indice del prossimo da restituire
        Else
            'ci sono ancora numeri disponibili, semplicemente restituiamo quello d'indice pr
            rndNumber = X(pr)
            pr = pr + 1 'aggiorniamo l'indice
            If pr > N Then
                'se abbiamo restituito l'ultimo, resettiamo pr per la successiva re-inizializzazione
                pr = 0
            End If
        End If
    End Function
P.S. Ora se volessi applicare la randomizzazione di 1 colore a delle label? mi spiego ho 20 label e randomicamente solo ad esempio 5 di queste devono colorarsi diversamente rispetto alle altre.... è fattibile?

grazie