Liczby losowe VBA

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 to 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, które są większe niż 0, ale mniejsze niż 1.

Teraz spójrz 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 daje ci różne liczby losowe, tj. Następną liczbę losową w sekwencji.

Jak generować losowe liczby za pomocą kodu VBA?

Możesz pobrać ten szablon VBA Random Numbers Excel tutaj - szablon VBA Random Numbers Excel

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 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ą zmienną, przypisaliśmy typ danych jako 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 nr 2 - za każdym razem otrzymuj tę samą liczbę losową

Jak widzieliśmy w poprzednim przykładzie, 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ą innej 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.