VBA Randomize | Com s'utilitza la declaració Randomize?
Declaració aleatòria a VBA
VBA Randomize La sentència és una sentència senzilla que afegim abans d'aplicar la funció RND. Sempre que es torna a obrir un llibre, la sentència Randomize proporciona un nou número inicial a la funció RND en funció de l’hora del sistema de l’ordinador.
Abans de parlar de la declaració Randomize, permeteu-me presentar-vos una senzilla funció RND amb VBA.
Com a funció de full de càlcul "RAND", també a VBA "RND" 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.
Exemple
Per obtenir un exemple, mireu el codi següent.
Codi:
Sub RND_Example () Debug.Print Rnd End Sub
Quan executo el codi a la finestra immediata, puc veure el número següent.
De la mateixa manera, quan executo aquest codi 3 vegades més puc veure els números següents.
Ara tancaré el llibre i el tornaré a obrir.
Ara tornaré a la finestra de l'editor visual bàsic.
Ara la finestra immediata està buida i neta.
Ara de nou executaré el codi quatre vegades i veuré quins són els números que obtindrem a la finestra immediata.
Vam obtenir els mateixos números que els anteriors.
No sembla un número aleatori perquè cada vegada que obrim el fitxer, solem obtenir els mateixos números a partir de zero.
Llavors, com es generen números aleatoris independentment de si el llibre s’ha tornat a obrir o no?
Hem d’utilitzar la declaració “Randomize”.
Com s'utilitza la declaració VBA Randomize?
Podeu descarregar aquesta plantilla Excel aleatòria VBA aquí: plantilla Excel aleatòria VBAExemple 1
Per obtenir nombres aleatoris, tot el que hem de fer és afegir el simple liner "Randomize" abans de la funció RND.
Codi:
Sub Randomize_1 () Randomize Debug.Print Rnd End Sub
Ara executaré el codi 4 vegades i veuré què obtinc.
Ha generat els números anteriors a la meva finestra local.
Ara tancaré el fitxer i tornaré a obrir-lo de nou.
Com és habitual, comencem amb una pissarra neta a la finestra visual bàsica.
Ara tornaré a executar el codi i veuré quins números obtenim aquesta vegada.
Vaja !!! Aquesta vegada hem aconseguit diferents números.
Com que hem afegit la sentència Randomize abans de la funció RND obtenim diferents números aleatoris cada vegada que tornem a obrir el fitxer.
Sembla un número aleatori, no?
Exemple 2
Nombres aleatoris superiors a un
Com hem vist, la funció "RND" només pot generar números de 0 a 1. Però, per tal de generar nombres superiors a un número aleatori, hem d’utilitzar “RANDOM BETWEEN” que està disponible amb la classe de funcions del full de treball.
Per tant, per generar números aleatoris superiors a un, hem d’utilitzar el codi següent.
Codi:
Sub Randomize_2 () Randomize Debug.Print Rnd * 100 End Sub
Ara executaré el codi i veuré què obtenim.
Així, podem utilitzar la sentència "Randomize" a VBA per generar números aleatoris cada vegada que tornem a obrir el fitxer Excel.