VBA willekeurige nummers

Excel VBA willekeurige getallen

Om willekeurige getallen in vba te genereren, hebben we een ingebouwde functie genaamd RND . Er is alleen een argument nodig om een ​​getal te genereren om willekeurige getallen te genereren en dit is ook een optionele parameter. Het zal willekeurige getallen creëren die groter zijn dan 0 en kleiner dan 1.

Dit werkt precies hetzelfde als de Excel-functie "RAND". Zoals ik al vertelde in de werkbladfunctie "RAND", kunnen we ook in VBA willekeurige getallen genereren die groter zijn dan 0 maar kleiner dan 1.

Bekijk nu de syntaxis van de "RND" -functie.

[Getal]: We kunnen het argument op drie manieren doorgeven.

  • Als we het nummer doorgeven als <0, blijft het elke keer hetzelfde willekeurige nummer genereren.
  • Als we het nummer doorgeven als 0, herhaalt het het meest recente nummer dat het heeft gegeven.
  • Als we het getal> 0 passeren, krijgt u steeds verschillende willekeurige getallen, dwz het volgende willekeurige getal in de reeks.

Hoe willekeurige getallen te genereren met VBA-code?

U kunt deze VBA Random Numbers Excel-sjabloon hier downloaden - VBA Random Numbers Excel-sjabloon

Voorbeeld 1

Nu zullen we het eenvoudige voorbeeld zien van het gebruik van de "RND" -functie. Volg de onderstaande stappen om de VBA-code zelf te schrijven.

Stap 1: Declareer de variabele als "Integer" in VBA

Code:

 Sub Rnd_Example1 () Dim K As Integer End Sub 

Stap 2: Wijs nu de waarde toe aan de variabele "k" tot en met " RND " -functie.

Code:

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

Stap 3: Toon de waarde die wordt geretourneerd door de variabele "k" in het berichtvenster .

Code:

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

Voer nu de Excel-macro uit en kijk wat het resultaat is.

Kijk wat er is gebeurd.

Het toont het resultaat als 1, waarbij de functie "RND" alleen getallen kan retourneren die groter zijn dan nul maar kleiner dan 1.

U moet nadenken over wat hier verkeerd is.

Het verkeerde hier is het soort datatype dat we hebben toegewezen aan de variabele "k".

Als je terugkijkt naar de variabele die we hebben gedeclareerd, hebben we het gegevenstype als geheel getal toegewezen. Omdat we de variabele als geheel getal hebben toegewezen, kan deze alleen de hele getallen tussen -32768 en 32767 weergeven.

Telkens wanneer RND het decimale getal retourneert, converteert VBA het decimale getal naar het dichtstbijzijnde gehele getal, dwz 1.

Dus, om de formule correct te laten werken, declareert u de variabele als " Dubbel ".

"Dubbel" is het gegevenstype in VBA dat decimale waarden kan bevatten.

Code:

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

Nu de code en kijk wat het resultaat is.

Klik op ok en draai nog een keer en kijk wat het resultaat is.

Deze keer kregen we een ander resultaat. Aangezien "RND" van nature een vluchtige functie is, reproduceert het elke keer dat u de code uitvoert verschillende resultaten.

Voorbeeld # 2 - Krijg elke keer hetzelfde willekeurige nummer

Zoals we in het vorige voorbeeld hebben gezien, reproduceert de "RND" -functie het resultaat elke keer dat we de code uitvoeren. Om steeds weer hetzelfde willekeurige getal te krijgen, moeten we het argument als nul doorgeven.

Code:

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

Dit levert steeds hetzelfde nummer op als we de code uitvoeren.

Voorbeeld # 3 - Genereer een geheel willekeurig getal

We kunnen ook hele getallen genereren door een andere VBA-functie of andere invoernummers te gebruiken. Kijk voor een voorbeeld naar de onderstaande code.

Code:

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

Deze code genereert elke keer dat we de code uitvoeren willekeurige hele getallen met decimalen.

Als u de hele getallen zonder decimalen bekijkt, kunnen we de onderstaande code gebruiken.

Code:

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

Hierdoor blijven de hele getallen van 1 tot 100 worden gegenereerd.