Véletlenszerű állítás a VBA-ban
A VBA Randomize utasítás egy egyszerű, egyvonalas utasítás, amelyet az RND függvény alkalmazása előtt adunk hozzá. Amikor egy munkafüzet újra megnyílik, a Randomize utasítás új magszámot ad az RND függvénynek, a számítógép rendszeridejétől függően.
Mielőtt a Randomize utasításról szólnék, hadd mutassak be egy egyszerű RND függvényt a VBA-val.
A VBA „RAND” munkalapfüggvényeként az „RND” véletlenszerű számokat is generál, amelyek nagyobbak, mint 0, de kisebbek, mint 1.
Most nézze meg az „RND” függvény szintaxisát.
![](https://cdn.know-base.net/4851269/vba_randomize_how_to_use_randomize_statement__2.png.webp)
(Szám): Három módon adhatjuk át az érvet.
- Ha a számot <0-ként adjuk meg, akkor minden alkalommal ugyanazt a véletlenszámot generálja.
- Ha a számot 0-ként adjuk meg, akkor megismétli a legutóbb megadott számot.
- Ha átadjuk a> 0 számot, akkor folyton különböző véletlenszerű számokat ad, azaz a következő véletlen számot a sorozatban.
Példa
Nézze meg például az alábbi kódot.
Kód:
Sub RND_Example () Debug.Print Rnd End Sub
![](https://cdn.know-base.net/4851269/vba_randomize_how_to_use_randomize_statement__3.png.webp)
Amikor futtatom a kódot az Azonnali ablakban, láthatom az alábbi számot.
![](https://cdn.know-base.net/4851269/vba_randomize_how_to_use_randomize_statement_.gif)
Hasonlóképpen, amikor még háromszor végrehajtom ezt a kódot, láthatom az alábbi számokat.
![](https://cdn.know-base.net/4851269/vba_randomize_how_to_use_randomize_statement__4.png.webp)
Most bezárom a munkafüzetet és újra kinyitom.
Most visszatérek a Visual Basic Editor ablakhoz.
![](https://cdn.know-base.net/4851269/vba_randomize_how_to_use_randomize_statement__5.png.webp)
Most a közvetlen ablak üres és tiszta.
Most ismét négyszer hajtom végre a kódot, és megnézem, milyen számokat kapunk a közvetlen ablakban.
![](https://cdn.know-base.net/4851269/vba_randomize_how_to_use_randomize_statement__6.png.webp)
Ugyanazokat a számokat kaptuk, mint fent.
Ez nem úgy néz ki, mint egy véletlenszerű szám, mert minden alkalommal, amikor újra megnyitjuk a fájlt, hajlamosak vagyunk ugyanazokat a számokat kapni a nullától kezdve.
Tehát hogyan generálunk véletlenszerű számokat, függetlenül attól, hogy a munkafüzet újra kinyílt-e vagy sem?
Használnunk kell a „Randomize” utasítást.
Hogyan kell használni a VBA véletlenszerű állítását?
1. példa
Véletlen számok megszerzéséhez mindössze annyit kell tennünk, hogy hozzáadjuk az RND függvény elé az egyszerû egyvonalas „Randomize” -et.
Kód:
Sub Randomize_1 () Randomize Debug.Print Rnd End Sub
![](https://cdn.know-base.net/4851269/vba_randomize_how_to_use_randomize_statement__7.png.webp)
Most négyszer futtatom a kódot, és megnézem, mit kapok.
![](https://cdn.know-base.net/4851269/vba_randomize_how_to_use_randomize_statement__8.png.webp)
A fenti számokat generálta a helyi ablakomban.
Most bezárom a fájlt, és újra megnyitom a fájlt.
Szokás szerint tiszta lappal indulunk a visual basic ablakban.
Most újra végrehajtom a kódot, és megnézem, hogy ezúttal milyen számokat kapunk.
![](https://cdn.know-base.net/4851269/vba_randomize_how_to_use_randomize_statement__2.gif)
Azta!!! Ezúttal különböző számokat kaptunk.
Mivel az RND függvény előtt hozzáadtuk a Randomize állítást, a fájl újbóli megnyitásakor különböző véletlenszerű számokat kapunk.
Ez véletlenszerű számnak tűnik, nem ???
2. példa
Véletlenszerű számok, nagyobbak, mint egy
Mint láttuk, az „RND” funkció csak 0-tól 1-ig képes számokat generálni. De egy véletlenszámnál nagyobb számok előállításához a „RANDOM BETWEEN” -et kell használnunk, amely a munkalap függvényosztályával érhető el.
Tehát egynél nagyobb véletlenszerű számok előállításához az alábbi kódot kell használnunk.
Kód:
Sub Randomize_2 () Randomize Debug.Print Rnd * 100 End Sub
![](https://cdn.know-base.net/4851269/vba_randomize_how_to_use_randomize_statement__9.png.webp)
Most végrehajtom a kódot, és megnézem, mit kapunk.
![](https://cdn.know-base.net/4851269/vba_randomize_how_to_use_randomize_statement__3.gif)
Így használhatjuk a VBA „Randomize” utasítását véletlenszámok előállítására, minden egyes alkalommal, amikor újra megnyitjuk az Excel fájlt.