Genereu números aleatoris mitjançant la funció VBA RND

Números aleatoris d'Excel VBA

Per a generar nombres aleatoris en vba tenim una funció incorporada anomenada RND. Només cal un argument per generar nombres aleatoris i aquest també és un paràmetre opcional. Crearà nombres aleatoris superiors a 0 i menors a 1.

Funciona exactament igual que la funció excel "RAND". Com he dit a la funció de full de càlcul "RAND", també a VBA podem generar nombres aleatoris superiors a 0 però inferiors a 1.

Ara mireu la sintaxi de la funció "RND".

[Número]: Podem passar l’argument de tres maneres.

  • Si passem el número com a <0, es continua generant el mateix número aleatori cada vegada.
  • Si passem el número com a 0, repetirà el número més recent que ha donat.
  • Si passem el número> 0, continua donant-vos diferents números aleatoris, és a dir, el següent número aleatori de la seqüència.

Com es generen números aleatoris mitjançant el codi VBA?

Podeu descarregar aquesta plantilla Excel de números aleatoris VBA aquí: plantilla Excel de números aleatoris VBA

Exemple 1

Ara veurem l'exemple senzill d'utilitzar la funció "RND". Seguiu els passos següents per escriure el codi VBA pel vostre compte.

Pas 1: Declareu la variable com "Enter" a VBA

Codi:

 Sub Rnd_Example1 () Dim K As Integer End Sub 

Pas 2: Ara assigneu el valor a la variable "k" a "RND”Funció.

Codi:

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

Pas 3: Mostra el valor que retorna la variable "k" al fitxer quadre de missatge.

Codi:

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

Ara executeu la macro excel i veureu quin és el resultat.

Mireu què ha passat.

Es mostra el resultat com a 1, on la funció "RND" només pot retornar nombres que són superiors a zero però inferiors a 1.

Heu d’estar pensant en què és el que no és correcte aquí.

El que és incorrecte aquí és el tipus de tipus de dades que hem assignat a la variable "k".

Si mireu enrere la variable que hem declarat, hem assignat el tipus de dades com a enter. Com que hem assignat la variable com a enter, només pot mostrar els nombres enters entre -32768 i 32767.

Sempre que RND retorna el nombre decimal VBA converteix el nombre decimal al nombre enter més proper, és a dir, 1.

Per tant, perquè la fórmula funcioni correctament, declareu la variable com a "Doble”.

"Doble" és el tipus de dades a VBA que pot contenir valors decimals.

Codi:

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

Ara el codi i veure quin és el resultat.

Feu clic a D'acord i córrer una vegada més i veureu quin és el resultat.

Aquesta vegada hem obtingut un resultat diferent. Com que "RND" és una funció volàtil a la natura, reprodueix resultats diferents cada vegada que executeu el codi.

Exemple 2: obteniu el mateix número aleatori cada vegada

Com hem vist l'exemple anterior, la funció "RND" reprodueix el resultat cada vegada que executem el codi. Per obtenir el mateix número aleatori, una i altra vegada, hem de passar l'argument com a zero.

Codi:

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

Això produirà el mateix nombre una i altra vegada quan executem el codi.

Exemple # 3: genera un número aleatori sencer

També podem generar nombres enters utilitzant una altra funció VBA o altres números d’entrada. Per obtenir un exemple, mireu el codi següent.

Codi:

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

Aquest codi generarà nombres enters aleatoris amb punts decimals cada vegada que executem el codi.

Si busqueu els nombres sencers sense punts decimals, podem utilitzar el codi següent.

Codi:

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

Això continuarà generant els nombres enters de l'1 al 100.