Genera numeri casuali utilizzando la funzione RND 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 anche nella funzione del foglio di lavoro "RAND" in VBA, possiamo generare numeri casuali maggiori di 0 ma inferiori a 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?

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 numero intero, può mostrare solo i numeri interi compresi tra -32768 e 32767.

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

Quindi, per far funzionare correttamente la formula, dichiara 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 lo stesso numero casuale ogni volta

Come abbiamo visto nell'esempio precedente e, 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. Ad 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, allora 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.

Articoli interessanti...