Luo satunnaislukuja käyttämällä VBA RND -toimintoa

Sisällysluettelo

Excel VBA -numerot

Voit luoda satunnaisia numeroita VBA meillä on sisäänrakennettu toiminto nimeltään RND . Satunnaislukujen luominen vaatii vain argumentilta numeron, ja tämä on myös valinnainen parametri. Se luo satunnaislukuja, jotka ovat suurempia kuin 0 ja pienempiä kuin 1.

Tämä toimii täsmälleen samalla tavalla kuin excel-toiminto "RAND". Kuten kerroin VBA-taulukon funktiossa "RAND", voimme luoda satunnaislukuja, jotka ovat suurempia kuin 0, mutta alle 1.

Katsokaa nyt ”RND” -toiminnon syntaksia.

(Luku): Voimme välittää argumentin kolmella tavalla.

  • Jos välitämme luvun <0, se tuottaa jatkuvasti saman satunnaisluvun joka kerta.
  • Jos välitämme numeron 0, se toistaa viimeisimmän antamansa numeron.
  • Jos välitämme luvun> 0, se antaa sinulle jatkuvasti erilaisia ​​satunnaislukuja, toisin sanoen sarjan seuraavan satunnaisluvun.

Kuinka luoda satunnaislukuja VBA-koodilla?

Esimerkki 1

Nyt näemme yksinkertaisen esimerkin “RND” -toiminnon käytöstä. Kirjoita alla olevat vaiheet kirjoittamaan VBA-koodi itse.

Vaihe 1: Ilmoita muuttuja kokonaisluvuksi VBA: ssa.

Koodi:

Sub Rnd_Example1 () Dim K kokonaisloppuna Sub Sub

Vaihe 2: Määritä nyt arvo muuttujalle “k” RND- toiminnon avulla.

Koodi:

Osa Rnd_esimerkki1 () Dim K kokonaislukuna K = Rnd () End Sub

Vaihe 3: Näytä muuttujan "k" palauttama arvo viestiruudussa .

Koodi:

Osa Rnd_esimerkki1 () Dim K kokonaislukuna K = Rnd () MsgBox K End Sub

Suorita nyt Excel-makro ja katso tulos.

Katso mitä on tapahtunut.

Se näyttää tuloksen 1, jossa "RND" -toiminto voi palauttaa vain numerot, jotka ovat suurempia kuin nolla, mutta alle 1.

Sinun on mietittävä, mikä väärä asia tässä on.

Tässä väärä asia on sellainen tietotyyppi, jonka olemme määrittäneet muuttujalle “k”.

Jos katsot taaksepäin ilmoitettua muuttujaa, olemme määrittäneet tietotyypiksi kokonaisluvun. Koska olemme antaneet muuttujalle kokonaisluvun, se voi näyttää vain kokonaisluvut välillä -32768 - 32767.

Aina kun RND palauttaa desimaaliluvun, VBA muuntaa desimaaliluvun lähimpään kokonaislukuun eli 1.

Joten, jotta kaava toimisi oikein, ilmoita muuttujaksi " Double ".

"Double" on VBA: n tietotyyppi, joka voi pitää desimaaliarvoja.

Koodi:

Alirnd_esimerkki1 () Dim K kaksinkertaiseksi K = Rnd () MsgBox K Lopeta alaruutu

Nyt koodi ja katso mitä tulos on.

Napsauta ok ja suorita vielä kerran ja katso mitä tulos on.

Tällä kertaa saimme toisen tuloksen. Koska “RND” on luonteeltaan epävakaa toiminto, se tuottaa erilaisia ​​tuloksia aina, kun suoritat koodin.

Esimerkki # 2 - Hanki sama satunnaisluku joka kerta

Kuten olemme nähneet edellisestä esimerkistä e, “RND” -toiminto tuottaa tuloksen joka kerta, kun suoritamme koodin. Jotta saisimme saman satunnaisluvun uudestaan ​​ja uudestaan, meidän on välitettävä argumentti nollana.

Koodi:

Alirnd_esimerkki2 () Dim K kaksinkertaiseksi K = Rnd (0) MsgBox K End Sub

Tämä tuottaa saman numeron uudestaan ​​ja uudestaan, kun suoritamme koodin.

Esimerkki # 3 - Luo koko satunnaisluku

Voimme myös luoda kokonaislukuja käyttämällä muita VBA-toimintoja tai muita syöttölukuja. Katso esimerkiksi alla oleva koodi.

Koodi:

Ala Rnd_esimerkki3 () Hämärä K kaksinkertaisena K = 1 + Rnd * 100 MsgBox K Loppu Sub

Tämä koodi tuottaa satunnaisia ​​kokonaislukuja desimaalipisteillä joka kerta, kun suoritamme koodin.

Jos tarkastelet kokonaislukuja ilman desimaalipilkkuja, voimme käyttää alla olevaa koodia.

Koodi:

Alirnd_esimerkki3 () Dim K kaksinkertaiseksi K = CInt (1 + Rnd * 100) MsgBox K End Sub

Tällöin kokonaislukuja muodostetaan 1: stä 100: een.

Mielenkiintoisia artikkeleita...