Generuj liczby losowe za pomocą funkcji VBA RND

Spisie treści

Liczby losowe Excel VBA

Aby wygenerować liczby losowe w VBA , mamy wbudowaną funkcję o nazwie RND . Aby wygenerować liczby losowe, wystarczy argument jako liczba i jest to również opcjonalny parametr. Stworzy liczby losowe, które są większe niż 0 i mniejsze niż 1.

Działa dokładnie tak samo, jak funkcja programu Excel „RAND”. Jak powiedziałem w funkcji arkusza „LOS” również w VBA, możemy generować liczby losowe większe niż 0, ale mniejsze niż 1.

Spójrz teraz na składnię funkcji „RND”.

(Liczba): Możemy przekazać argument na trzy sposoby.

  • Jeśli przekażemy liczbę jako <0, za każdym razem generuje tę samą liczbę losową.
  • Jeśli przekażemy liczbę jako 0, powtórzy ona ostatnią podaną liczbę.
  • Jeśli przekażemy liczbę> 0, to ciągle daje różne liczby losowe, tj. Następną liczbę losową w sekwencji.

Jak generować losowe liczby za pomocą kodu VBA?

Przykład 1

Teraz zobaczymy prosty przykład użycia funkcji „RND”. Wykonaj poniższe kroki, aby samodzielnie napisać kod VBA.

Krok 1: Zadeklaruj zmienną jako „Integer” w języku VBA.

Kod:

Sub Rnd_Example1 () Dim K As Integer End Sub

Krok 2: Teraz przypisz wartość zmiennej „k” za pomocą funkcji „ RND ”.

Kod:

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

Krok 3: Pokaż wartość zwracaną przez zmienną „k” w oknie komunikatu .

Kod:

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

Teraz uruchom makro programu Excel i zobacz, jaki jest wynik.

Zobacz, co się stało.

Pokazuje wynik jako 1, gdzie funkcja „RND” może zwracać tylko liczby większe od zera, ale mniejsze od 1.

Musisz myśleć o tym, co jest nie tak.

Nieprawidłowa rzecz to rodzaj typu danych, który przypisaliśmy zmiennej „k”.

Jeśli spojrzysz wstecz na zadeklarowaną przez nas zmienną, przypisaliśmy typ danych Integer. Ponieważ przypisaliśmy zmiennej jako Integer, może ona wyświetlać tylko liczby całkowite od -32768 do 32767.

Za każdym razem, gdy RND zwraca liczbę dziesiętną, VBA konwertuje liczbę dziesiętną na najbliższą liczbę całkowitą, tj. 1.

Aby więc formuła działała poprawnie, zadeklaruj zmienną jako „ Double ”.

„Podwójne” to typ danych w języku VBA, który może przechowywać wartości dziesiętne.

Kod:

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

Teraz kod i zobacz, jaki jest wynik.

Kliknij ok i uruchom jeszcze raz i zobacz, jaki jest wynik.

Tym razem otrzymaliśmy inny wynik. Ponieważ „RND” jest z natury funkcją ulotną, odtwarza różne wyniki za każdym razem, gdy wykonujesz kod.

Przykład 2 - za każdym razem otrzymuj tę samą liczbę losową

Jak widzieliśmy w poprzednim przykładzie e, funkcja „RND” odtwarza wynik za każdym razem, gdy wykonujemy kod. Aby raz po raz otrzymać tę samą liczbę losową, musimy przekazać argument jako zero.

Kod:

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

Spowoduje to wielokrotne generowanie tej samej liczby podczas wykonywania kodu.

Przykład # 3 - Generowanie całej liczby losowej

Możemy również generować liczby całkowite za pomocą innych funkcji VBA lub innych liczb wejściowych. Na przykład spójrz na poniższy kod.

Kod:

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

Ten kod wygeneruje losowe liczby całkowite z miejscami dziesiętnymi za każdym razem, gdy wykonujemy kod.

Jeśli patrzysz na liczby całkowite bez miejsc dziesiętnych, możemy użyć poniższego kodu.

Kod:

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

Spowoduje to generowanie liczb całkowitych od 1 do 100.

Interesujące artykuły...