Numeri casuali VBA

Numeri casuali VBA di Excel

Per generare numeri casuali in vba abbiamo una funzione incorporata chiamata RND . Ci vuole solo un argomento un numero per generare numeri casuali e anche questo è un parametro opzionale. Creerà numeri casuali maggiori di 0 e minori di 1.

Funziona esattamente come la funzione Excel "RAND". Come ho detto nella funzione del foglio di lavoro "RAND", anche in VBA possiamo generare numeri casuali maggiori di 0 ma minori di 1.

Ora dai un'occhiata alla sintassi della funzione "RND".

[Numero]: Possiamo passare l'argomento in tre modi.

  • Se passiamo il numero come <0, continua a generare lo stesso numero casuale ogni volta.
  • Se passiamo il numero come 0, ripeterà il numero più recente che ha fornito.
  • Se passiamo il numero> 0, continua a darti numeri casuali diversi, cioè il numero casuale successivo nella sequenza.

Come generare numeri casuali utilizzando il codice VBA?

Puoi scaricare questo modello Excel per numeri casuali VBA qui - Modello Excel per numeri casuali VBA

Esempio 1

Vediamo ora il semplice esempio di utilizzo della funzione “RND”. Segui i passaggi seguenti per scrivere il codice VBA da solo.

Passaggio 1: dichiara la variabile come "Integer" in VBA

Codice:

 Sub Rnd_Example1 () Dim K As Integer End Sub 

Passaggio 2: ora assegnare il valore alla variabile "k" tramite la funzione " RND ".

Codice:

 Sub Rnd_Example1 () Dim K As Integer K = Rnd () End Sub 

Passaggio 3: mostra il valore restituito dalla variabile "k" nella finestra del messaggio .

Codice:

 Sub Rnd_Example1 () Dim K As Integer K = Rnd () MsgBox K End Sub 

Ora esegui la macro excel e guarda qual è il risultato.

Guarda cosa è successo.

Mostra il risultato come 1 dove la funzione "RND" può restituire solo numeri che sono maggiori di zero ma minori di 1.

Stai pensando a quale sia la cosa sbagliata qui.

La cosa sbagliata qui è il tipo di tipo di dati che abbiamo assegnato alla variabile "k".

Se guardi indietro alla variabile che abbiamo dichiarato, abbiamo assegnato il tipo di dati come Integer. Poiché abbiamo assegnato la variabile come Integer, può mostrare solo i numeri interi compresi tra -32768 e 32767.

Ogni volta che RND restituisce il numero decimale, VBA converte il numero decimale nell'intero più vicino, ovvero 1.

Quindi, per far funzionare correttamente la formula, dichiarare la variabile come " Double ".

"Double" è il tipo di dati in VBA che può contenere valori decimali.

Codice:

 Sub Rnd_Example1 () Dim K As Double K = Rnd () MsgBox K End Sub 

Ora il codice e guarda qual è il risultato.

Fare clic su ok ed eseguire ancora una volta e vedere qual è il risultato.

Questa volta abbiamo ottenuto un risultato diverso. Poiché "RND" è una funzione volatile in natura, riproduce risultati diversi ogni volta che si esegue il codice.

Esempio n. 2: ottieni sempre lo stesso numero casuale

Come abbiamo visto l'esempio precedente la funzione “RND” riproduce il risultato ogni volta che eseguiamo il codice. Per ottenere lo stesso numero casuale, ancora e ancora, dobbiamo passare l'argomento come zero.

Codice:

 Sub Rnd_Example2 () Dim K As Double K = Rnd (0) MsgBox K End Sub 

Questo produrrà lo stesso numero ancora e ancora quando eseguiremo il codice.

Esempio n. 3 - Genera numero intero casuale

Possiamo anche generare numeri interi utilizzando altre funzioni VBA o altri numeri di input. Per un esempio, guarda il codice seguente.

Codice:

 Sub Rnd_Example3 () Dim K As Double K = 1 + Rnd * 100 MsgBox K End Sub 

Questo codice genererà numeri interi casuali con punti decimali ogni volta che eseguiremo il codice.

Se stai guardando i numeri interi senza punti decimali, possiamo usare il codice seguente.

Codice:

 Sub Rnd_Example3 () Dim K As Double K = CInt (1 + Rnd * 100) MsgBox K End Sub 

Ciò continuerà a generare i numeri interi da 1 a 100.