Excel VBA slumpmässiga nummer
För att generera slumptal 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” också i VBA kan vi 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 som <0, genererar det samma slumpmässiga tal varje gång.
- Om vi skickar siffran som 0, kommer den att upprepa den senaste siffran den har gett.
- Om vi passerar siffran> 0 fortsätter det att ge dig olika slumptal, dvs. nästa slumptal i sekvensen.

Hur genererar jag slumpmässiga nummer med VBA-kod?
Exempel 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 "Heltal" 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 deklarerat har vi tilldelat datatypen Heltal. Eftersom vi har tilldelat variabeln som heltal kan den bara visa heltal mellan -32768 till 32767.
Närhelst RND returnerar decimaltal, omvandlar VBA decimaltal till närmaste heltal, dvs. 1.
Så, för att få formeln att fungera korrekt, 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 föregående exempel e, återger funktionen “RND” 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. Titta till exempel på koden nedan.
Koda:
Sub Rnd_Example3 () Dim K Som Double K = 1 + Rnd * 100 MsgBox K End Sub
Denna kod 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.