Genereer willekeurige getallen met behulp van de VBA RND-functie

Excel VBA willekeurige getallen

Om willekeurige getallen in vba te genereren, hebben we een ingebouwde functie genaamd RND . Er is slechts 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" in VBA, kunnen we 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 doorgeven, krijgt u steeds verschillende willekeurige getallen, dwz het volgende willekeurige getal in de reeks.

Hoe willekeurige getallen te genereren met VBA-code?

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" via de functie " RND ".

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 gegevenstype dat we hebben toegewezen aan de variabele 'k'.

Als je terugkijkt op 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 goed 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 e hebben gezien, reproduceert de functie "RND" 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 andere VBA-functies of andere invoernummers te gebruiken. Kijk bijvoorbeeld 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.

Interessante artikelen...