Creare Numero Casuale Non Ripetuto
Hai un problema con Excel? 
Creare Numero Casuale Non Ripetuto
di Edi (utente non iscritto) data: 27/06/2016 23:12:55
Salve,
Ho da poco iniziato a lavorare con il VBA e perciò perdonate se durante questo messaggio dirò qualcosa di stupido, detto ciò, vi propongo il mio problema:
Ho la necessità di creare un pulsante (nella UserForm) che generi un numero casuale (non ripetuto) da 0 a 9 e al raggiungimento dell'ultimo numero generato una MsgBox dovrà apparire(un esempio: premi il pulsante e genera il numero, premi il pulsante e genera un altro numero diverso ma sempre compreso tra 0 e 9 e così via... dopo aver concluso il numero dei valori generabili apparirà una MsgBox). Il problema è che il numero generato deve essere globale, infatti lo devo utilizzare in altre Sub.
Sarei grato se qualcuno di voi riuscisse a fornirmi informazioni a riguardo o, ancora meglio, dei frammenti di codice.
Grazie mille ;)
di patel data: 28/06/2016 07:37:35
per la generazione puoi usare questo codice, per il resto dovresti allegare un file con le userform
Sub RandomArr() ' no duplicati la migliore
Dim i As Integer, j As Integer, temp As Integer, arr() As Integer, first As Integer, last As Integer
Columns(1).ClearContents
first = 1: last = 9
ReDim arr(last)
For i = first To last
arr(i) = i
Next
For i = last To first Step -1
j = Rnd * (last - first + 1) + first
If j > last Then j = last
temp = arr(i)
arr(i) = arr(j)
arr(j) = temp
Next
Range("A1:A" & last) = Application.Transpose(arr)
MsgBox "terminato"
End Sub |
di Cucù data: 28/06/2016 09:25:37
@ Patel
Una curiosità...
Perchè utilizzi le variabili "first" e "last" assegnando un valore che già conosci per poi andare a ridimensionare l'array???
Cucù
di patel data: 28/06/2016 10:28:34
perché è una macro adattata, l'originale prevede una inputbox per last
Vuoi Approfondire?