Creare Numero Casuale Non Ripetuto



  • 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