VBA slumpmässiga nummer

Excel VBA slumpmässiga nummer

För att generera slumpmässiga nummer i vba har vi en inbyggd funktion som heter RND . Det krävs bara ett argument ett nummer för att generera slumptal och detta är också en valfri parameter. Det kommer att skapa slumptal som är större än 0 och mindre än 1.

Detta fungerar exakt på samma sätt som excelfunktionen “RAND”. Som jag sa i kalkylfunktionen “RAND” kan vi också i VBA generera slumptal som är större än 0 men mindre än 1.

Ta nu en titt på syntaxen för “RND” -funktionen.

[Number]: Vi kan skicka argumentet på tre sätt.

  • Om vi ​​skickar siffran till <0 genererar det samma slumpmässiga tal varje gång.
  • Om vi ​​skickar siffran som 0, kommer den att upprepa det senaste numret som den har gett.
  • Om vi ​​passerar siffran> 0 fortsätter det att ge dig olika slumpmässiga nummer, dvs nästa slumptal i sekvensen.

Hur genererar jag slumpmässiga nummer med VBA-kod?

Du kan ladda ner denna Excel-mall för slumpmässiga siffror här - VBA-mall för slumpmässiga siffror för Excel

Exempel nr 1

Nu kommer vi att se det enkla exemplet med att använda “RND” -funktionen. Följ stegen nedan för att skriva VBA-koden på egen hand.

Steg 1: Förklara variabeln som "Integer" i VBA

Koda:

 Sub Rnd_Example1 () Dim K som heltal End Sub 

Steg 2: Tilldela nu värdet till variabeln "k" genom " RND " -funktionen.

Koda:

 Sub Rnd_Example1 () Dim K som heltal K = Rnd () End Sub 

Steg 3: Visa värdet som returneras av variabeln “k” i meddelandefältet .

Koda:

 Sub Rnd_Example1 () Dim K som heltal K = Rnd () MsgBox K End Sub 

Kör nu Excel-makrot och se vad resultatet är.

Se vad som har hänt.

Resultatet visas som 1 där “RND” -funktionen endast kan returnera siffror som är större än noll men mindre än 1.

Du måste tänka på vad som är fel här.

Fel sak här är vilken typ av datatyp vi har tilldelat variabeln “k”.

Om du ser tillbaka på variabeln som vi har förklarat har vi tilldelat datatypen som heltal. Eftersom vi har tilldelat variabeln som heltal kan den bara visa heltal mellan -32768 till 32767.

Närhelst RND returnerar decimaltal VBA omvandlar decimaltal till närmaste heltal, dvs. 1.

Så, för att få formeln att fungera ordentligt, förklara variabeln som " Dubbel ".

”Dubbel” är datatypen i VBA som kan innehålla decimalvärden.

Koda:

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

Nu koden och se vad resultatet är.

Klicka på ok och kör en gång till och se vad resultatet blir.

Den här gången fick vi ett annat resultat. Eftersom “RND” är en flyktig funktion i naturen återger den olika resultat varje gång du kör koden.

Exempel # 2 - Få samma slumpmässiga nummer varje gång

Som vi har sett i det föregående exemplet återger "RND" -funktionen resultatet varje gång vi kör koden. För att få samma slumptal, om och om igen, måste vi skicka argumentet som noll.

Koda:

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

Detta kommer att ge samma antal om och om igen när vi kör koden.

Exempel # 3 - Generera helt slumpmässigt nummer

Vi kan också generera heltal med andra VBA-funktioner eller andra inmatningsnummer. För ett exempel, se nedanstående kod.

Koda:

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

Den här koden genererar slumpmässiga heltal med decimaler varje gång vi kör koden.

Om du tittar på heltal utan decimaler kan vi använda koden nedan.

Koda:

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

Detta kommer att generera hela siffrorna från 1 till 100.