Nilai acak sering kita gunakan sebagai simulasi atau menghasilkan data contoh. Pada VBA, fungsi untuk menghasilkan nilai acak adalah RND().
Pemanggilan fungsi RND akan menghasilkan nilai pecahan dari 0 s/d 1, misalkan nilai 0.96 atau 0.056.
Selain itu, fungsi ini dapat menerima satu parameter bertipe nilai numerik dengan syntax sebagai berikut.
RND(PARAMETER_ANGKA)
- nilai di bawah nol ( <0 ), akan menghasilkan nilai acak pertama kali saja. Setelah itu nilainya tidak akan berubah-ubah.
- nilai di atas nol ( >0 ), akan menghasilkan nilai acak berikutnya.
- nilai nol ( 0 ), akan menghasilkan nilai yang sama dengan nilai acak terakhir yang dihasilkan.
Semua nilai parameter di atas akan tetap menghasilkan nilai acak pecahan dari 0 s/d 1.
Jika Anda ingin mengambil rentang nilai diantara 0 s/d 100 maka dapat menggunakan kode berikut:
Jika Anda ingin mengambil rentang nilai diantara 0 s/d 100 maka dapat menggunakan kode berikut:
RND() * 100
Dan jika Anda ingin mengambil rentang nilai yang memiliki nilai negatif, misalkan diantara -50 s/d 50 maka dapat menggunakan kode berikut:
RND() * 100 - 50
Berikut adalah contoh code VBA pada satu worksheet yang memiliki 3 button dan telah diassign macro masing-masing button1_click, button2_click dan button3_click untuk mensimulasikan penggunaan berbagai variasi fungsi RND. Contoh file Excelnya dapat Anda download disini.
Sub Button1_Click()
Sheet1.Range("A1") = "Rnd()"
Sheet1.Range("B1") = "Rnd(0)"
Sheet1.Range("C1") = ""
Sheet1.Range("D1") = "Rnd(5)"
Sheet1.Range("A2") = Rnd()
Sheet1.Range("B2") = Rnd(0)
Sheet1.Range("C2") = ""
Sheet1.Range("D2") = Rnd(5)
End Sub
Sub Button2_Click()
Sheet1.Range("A1") = "Rnd()"
Sheet1.Range("B1") = "Rnd(0)"
Sheet1.Range("C1") = "Rnd(-5)"
Sheet1.Range("D1") = "Rnd(5)"
Sheet1.Range("A2") = Rnd()
Sheet1.Range("B2") = Rnd(0)
Sheet1.Range("C2") = Rnd(-5)
Sheet1.Range("D2") = Rnd(5)
End Sub
Sub Button3_Click()
Sheet1.Range("A1") = "0.00 s/d 100.00"
Sheet1.Range("B1") = "0 s/d 100"
Sheet1.Range("C1") = "-50 s/d 50"
Sheet1.Range("D1") = ""
Sheet1.Range("A2") = Rnd() * 100
Sheet1.Range("B2") = CInt(Rnd() * 100)
Sheet1.Range("C2") = CInt(Rnd() * 100 - 50)
Sheet1.Range("D2") = ""
End Sub
~~~ Semoga Bermanfaat ~~~