Numere aleatoare Excel VBA
Pentru a genera numere aleatorii în vba avem o funcție încorporată numită RND . Este nevoie doar de un argument pentru a genera numere aleatorii și acesta este, de asemenea, un parametru opțional. Se vor crea numere aleatorii mai mari de 0 și mai mici de 1.
Acest lucru funcționează exact la fel ca funcția excel „RAND”. După cum am spus și în funcția de foaie de lucru „RAND” în VBA, putem genera numere aleatorii care sunt mai mari de 0, dar mai mici de 1.
Acum aruncați o privire la sintaxa funcției „RND”.

(Număr): Putem trece argumentul în trei moduri.
- Dacă trecem numărul ca <0, acesta continuă să genereze același număr aleatoriu de fiecare dată.
- Dacă trecem numărul ca 0, acesta va repeta cel mai recent număr dat.
- Dacă trecem numărul> 0, acesta vă oferă în continuare numere aleatorii diferite, adică următorul număr aleatoriu din secvență.

Cum se generează numere aleatorii folosind codul VBA?
Exemplul nr. 1
Acum vom vedea exemplul simplu de utilizare a funcției „RND”. Urmați pașii de mai jos pentru a scrie singur codul VBA.
Pasul 1: declarați variabila ca „Număr întreg” în VBA.
Cod:
Sub Rnd_Example1 () Dim K As Integer End Sub

Pasul 2: Acum atribuiți valoarea variabilei „k” prin funcția „ RND ”.
Cod:
Sub Rnd_Example1 () Dim K As Integer K = Rnd () End Sub

Pasul 3: Afișați valoarea returnată de variabila „k” în caseta de mesaj .
Cod:
Sub Rnd_Example1 () Dim K As Integer K = Rnd () MsgBox K End Sub

Acum rulați macrocomanda excel și vedeți care este rezultatul.

Uite ce s-a întâmplat.
Se arată rezultatul ca 1 în care funcția „RND” poate returna numai numere mai mari decât zero, dar mai mici decât 1.
Trebuie să vă gândiți la ce este greșit aici.
Lucrul greșit aici este tipul de tip de date pe care l-am atribuit variabilei „k”.
Dacă vă uitați înapoi la variabila pe care am declarat-o, am atribuit tipul de date ca întreg. Deoarece am atribuit variabila ca Număr întreg, aceasta poate afișa numai numerele între -32768 și 32767.
Ori de câte ori RND returnează numărul zecimal, VBA convertește numărul zecimal la cel mai apropiat număr întreg, adică 1.
Deci, pentru ca formula să funcționeze corect, declarați variabila ca „ Dublă ”.
„Dublu” este tipul de date din VBA care poate conține valori zecimale.
Cod:
Sub Rnd_Example1 () Dim K As Double K = Rnd () MsgBox K End Sub

Acum, codul și vedeți care este rezultatul.

Faceți clic pe OK și rulați încă o dată și vedeți care este rezultatul.

De data aceasta am obținut un rezultat diferit. Deoarece „RND” este o funcție volatilă în natură, reproduce rezultate diferite de fiecare dată când executați codul.
Exemplul # 2 - Obțineți același număr aleatoriu de fiecare dată
După cum am văzut în exemplul anterior e, funcția „RND” reproduce rezultatul de fiecare dată când executăm codul. Pentru a obține același număr aleatoriu, din nou și din nou, trebuie să trecem argumentul ca zero.
Cod:
Sub Rnd_Example2 () Dim K As Double K = Rnd (0) MsgBox K End Sub
Acest lucru va produce același număr din nou și din nou când executăm codul.
Exemplul # 3 - Generați întregul număr aleatoriu
De asemenea, putem genera numere întregi folosind alte funcții VBA sau alte numere de intrare. De exemplu, uitați-vă la codul de mai jos.
Cod:
Sub Rnd_Example3 () Dim K As Double K = 1 + Rnd * 100 MsgBox K End Sub
Acest cod va genera numere întregi aleatorii cu puncte zecimale de fiecare dată când executăm codul.
Dacă vă uitați la numerele întregi fără zecimale, atunci putem folosi codul de mai jos.
Cod:
Sub Rnd_Example3 () Dim K As Double K = CInt (1 + Rnd * 100) MsgBox K End Sub
Aceasta va continua să genereze numerele întregi de la 1 la 100.