VBA-Zufallszahlen

Excel VBA Zufallszahlen

Um Zufallszahlen in vba zu generieren, haben wir eine eingebaute Funktion namens RND . Es ist nur ein Argument und eine Zahl erforderlich, um Zufallszahlen zu generieren. Dies ist auch ein optionaler Parameter. Es werden Zufallszahlen erstellt, die größer als 0 und kleiner als 1 sind.

Dies funktioniert genauso wie die Excel-Funktion „RAND“. Wie ich in der Arbeitsblattfunktion „RAND“ gesagt habe, können wir auch in VBA Zufallszahlen generieren, die größer als 0, aber kleiner als 1 sind.

Schauen Sie sich nun die Syntax der Funktion „RND“ an.

[Nummer]: Wir können das Argument auf drei Arten übergeben.

  • Wenn wir die Zahl als <0 übergeben, wird jedes Mal dieselbe Zufallszahl generiert.
  • Wenn wir die Zahl als 0 übergeben, wird die zuletzt angegebene Zahl wiederholt.
  • Wenn wir die Zahl> 0 übergeben, erhalten Sie immer wieder andere Zufallszahlen, dh die nächste Zufallszahl in der Sequenz.

Wie generiere ich Zufallszahlen mit VBA-Code?

Sie können diese VBA-Excel-Vorlage für Zufallszahlen hier herunterladen - Excel-Vorlage für VBA-Zufallszahlen

Beispiel 1

Nun sehen wir das einfache Beispiel für die Verwendung der Funktion „RND“. Befolgen Sie die folgenden Schritte, um den VBA-Code selbst zu schreiben.

Schritt 1: Deklarieren Sie die Variable in VBA als "Integer"

Code:

 Sub Rnd_Example1 () Dim K As Integer End Sub 

Schritt 2: Weisen Sie nun den Wert der Variablen "k" über die Funktion " RND " zu.

Code:

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

Schritt 3: Zeigen Sie den von der Variablen "k" zurückgegebenen Wert im Meldungsfeld an .

Code:

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

Führen Sie nun das Excel-Makro aus und sehen Sie, was das Ergebnis ist.

Schau was passiert ist.

Das Ergebnis wird als 1 angezeigt, wobei die Funktion „RND“ nur Zahlen zurückgeben kann, die größer als Null, aber kleiner als 1 sind.

Sie müssen darüber nachdenken, was hier falsch ist.

Das Falsche ist hier die Art des Datentyps, den wir der Variablen "k" zugewiesen haben.

Wenn Sie auf die von uns deklarierte Variable zurückblicken, haben wir den Datentyp als Ganzzahl zugewiesen. Da wir die Variable als Ganzzahl zugewiesen haben, können nur die ganzen Zahlen zwischen -32768 und 32767 angezeigt werden.

Immer wenn RND die Dezimalzahl zurückgibt, konvertiert VBA die Dezimalzahl in die nächste Ganzzahl, dh 1.

Damit die Formel ordnungsgemäß funktioniert, deklarieren Sie die Variable als " Double ".

"Double" ist der Datentyp in VBA, der Dezimalwerte enthalten kann.

Code:

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

Nun den Code und sehen, was das Ergebnis ist.

Klicken Sie auf OK und führen Sie es noch einmal aus, um das Ergebnis zu sehen.

Diesmal haben wir ein anderes Ergebnis erzielt. Da „RND“ eine flüchtige Funktion ist, werden bei jeder Ausführung des Codes unterschiedliche Ergebnisse reproduziert.

Beispiel 2 - Erhalten Sie jedes Mal die gleiche Zufallszahl

Wie wir im vorherigen Beispiel gesehen haben, gibt die Funktion „RND“ das Ergebnis jedes Mal wieder, wenn wir den Code ausführen. Um immer wieder die gleiche Zufallszahl zu erhalten, müssen wir das Argument als Null übergeben.

Code:

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

Dies wird immer wieder dieselbe Nummer erzeugen, wenn wir den Code ausführen.

Beispiel 3 - Generieren Sie eine ganze Zufallszahl

Wir können auch ganze Zahlen erzeugen, indem wir andere VBA-Funktionen oder andere Eingabenummern verwenden. Ein Beispiel finden Sie im folgenden Code.

Code:

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

Dieser Code generiert bei jeder Ausführung des Codes zufällige ganze Zahlen mit Dezimalstellen.

Wenn Sie die ganzen Zahlen ohne Dezimalstellen betrachten, können wir den folgenden Code verwenden.

Code:

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

Dadurch werden weiterhin die gesamten Zahlen von 1 bis 100 generiert.