Membuat Angka Acak di VBA Excel dengan Rnd dan Randomize

Banyak aplikasi VBA Excel membutuhkan angka acak untuk menjalankan proses tertentu. Misalnya, memilih pemenang undian, membuat soal latihan yang berbeda setiap kali dibuka, menghasilkan data simulasi, hingga menentukan posisi awal dalam sebuah permainan sederhana.

Untuk kebutuhan tersebut, VBA Excel menyediakan dua komponen yang sering digunakan secara bersamaan, yaitu fungsi Rnd dan pernyataan Randomize. Meskipun terlihat sederhana, memahami cara kerja keduanya sangat penting agar angka yang dihasilkan benar-benar bervariasi dan sesuai dengan kebutuhan aplikasi.

Pada artikel ini, kita akan mempelajari cara menggunakan Rnd dan Randomize, berbagai contoh implementasi, serta praktik terbaik agar proses pembangkitan angka acak berjalan optimal.


Mengapa Membutuhkan Angka Acak?

Bayangkan ketika sedang membuat aplikasi undian doorprize. Jika nomor pemenang selalu sama setiap kali macro dijalankan, tentu sistem tersebut tidak dapat dikatakan acak.

Hal serupa juga berlaku pada aplikasi simulasi, permainan, maupun pengujian data. Angka yang dihasilkan harus memiliki variasi sehingga setiap proses dapat menghasilkan kondisi yang berbeda.

Di sinilah Rnd dan Randomize berperan.


Mengenal Fungsi Rnd

Fungsi Rnd digunakan untuk menghasilkan bilangan acak bertipe Single dengan nilai antara 0 (inklusif) dan 1 (eksklusif).

Sintaksnya sangat sederhana.

Rnd

Contoh penggunaan:

Sub ContohRnd()

    MsgBox Rnd

End Sub

Hasil yang muncul bisa berbeda setiap kali dijalankan, misalnya:

0.6842713

atau

0.1278451

Karena hasilnya berupa angka desimal antara 0 dan 1, biasanya fungsi ini dikombinasikan dengan perhitungan lain untuk menghasilkan rentang angka tertentu.


Mengapa Harus Menggunakan Randomize?

Banyak pemula langsung menggunakan Rnd tanpa memanggil Randomize terlebih dahulu.

Padahal, Randomize berfungsi menginisialisasi generator angka acak menggunakan nilai waktu sistem (seed). Dengan demikian, urutan angka yang dihasilkan akan lebih bervariasi setiap kali aplikasi dijalankan.

Contohnya:

Sub ContohRandom()

    Randomize

    MsgBox Rnd

End Sub

Menambahkan satu baris Randomize merupakan praktik yang sangat disarankan sebelum menggunakan Rnd.


Membuat Angka Acak dalam Rentang Tertentu

Dalam kebanyakan aplikasi, Anda tentu tidak membutuhkan angka antara 0 dan 1, melainkan angka dalam rentang tertentu.

Angka 1 sampai 10

Randomize

MsgBox Int((10 * Rnd) + 1)

Hasil yang mungkin muncul:

7

Angka 1 sampai 100

Randomize

MsgBox Int((100 * Rnd) + 1)

Setiap kali macro dijalankan, angka yang dihasilkan akan berada pada rentang 1 hingga 100.


Memahami Rumus Pembangkitan Angka Acak

Rumus berikut mungkin sering Anda temui.

Int((Maksimum - Minimum + 1) * Rnd + Minimum)

Keterangan:

  • Minimum = nilai terkecil.

  • Maksimum = nilai terbesar.

Sebagai contoh, untuk menghasilkan angka antara 50 dan 75.

Randomize

MsgBox Int((75 - 50 + 1) * Rnd + 50)

Pendekatan ini dapat digunakan untuk berbagai kebutuhan dengan hanya mengubah nilai minimum dan maksimum.


Studi Kasus 1: Sistem Undian Sederhana

Misalkan sebuah undian memiliki peserta bernomor 1 hingga 200.

Sub Undian()

    Randomize

    MsgBox "Nomor pemenang: " & _
    Int((200 * Rnd) + 1)

End Sub

Setiap kali macro dijalankan, sistem akan memilih satu nomor peserta secara acak.


Studi Kasus 2: Membuat Data Simulasi

Saat menguji aplikasi, Anda sering membutuhkan data contoh.

Sub SimulasiNilai()

    Randomize

    Range("A2").Value = _
    Int((100 * Rnd) + 1)

End Sub

Kode tersebut akan menghasilkan nilai acak antara 1 sampai 100 yang dapat digunakan sebagai data uji.


Studi Kasus 3: Permainan Tebak Angka

Permainan sederhana dapat dibuat hanya dengan beberapa baris kode.

Dim Target As Integer

Randomize

Target = Int((50 * Rnd) + 1)

Pengguna kemudian diminta menebak angka tersebut hingga benar.

Konsep sederhana ini menjadi dasar berbagai permainan edukatif berbasis VBA.


Studi Kasus 4: Memilih Pemenang Secara Acak

Misalkan daftar peserta berada pada sel A2:A51.

Randomize

Dim Baris As Integer

Baris = Int((50 * Rnd) + 2)

MsgBox Range("A" & Baris).Value

Macro tersebut akan mengambil salah satu nama peserta secara acak dari daftar yang tersedia.


💡 Tips Praktis

Panggil Randomize satu kali sebelum proses pembangkitan angka acak dimulai. Tidak perlu memanggilnya berulang kali di dalam perulangan, karena justru dapat memengaruhi kualitas variasi angka yang dihasilkan.


Kesalahan yang Sering Dilakukan

Lupa Memanggil Randomize

Ini merupakan kesalahan yang paling sering terjadi.

MsgBox Rnd

Tanpa Randomize, pola angka yang dihasilkan dapat berulang setiap kali workbook dibuka.


Salah Menentukan Rentang Angka

Sebagian pengguna menulis:

Int(10 * Rnd)

Hasilnya adalah angka 0 sampai 9, bukan 1 sampai 10.

Jika ingin rentang dimulai dari angka 1, tambahkan +1.


Menganggap Rnd Menghasilkan Bilangan Bulat

Fungsi Rnd selalu menghasilkan angka desimal.

Untuk memperoleh bilangan bulat, kombinasikan dengan fungsi Int seperti pada contoh-contoh sebelumnya.


Kapan Menggunakan Rnd dan Randomize?

Kombinasi kedua komponen ini sangat cocok digunakan untuk:

  • sistem undian,

  • permainan sederhana,

  • simulasi data,

  • pembuatan soal latihan,

  • pemilihan data secara acak,

  • pengujian aplikasi,

  • simulasi statistik.

Semakin sering Anda membuat aplikasi interaktif, semakin sering pula kedua komponen ini digunakan.


Kesimpulan

Fungsi Rnd dan pernyataan Randomize merupakan pasangan yang hampir selalu digunakan bersama ketika aplikasi membutuhkan angka acak. Rnd bertugas menghasilkan nilai acak, sedangkan Randomize memastikan urutan angka yang dihasilkan lebih bervariasi pada setiap eksekusi program.

Dalam artikel ini, Anda telah mempelajari cara menghasilkan angka acak, menentukan rentang nilai tertentu, serta menerapkannya pada berbagai studi kasus seperti sistem undian, simulasi data, permainan sederhana, dan pemilihan data secara acak. Anda juga memahami pentingnya mengombinasikan Rnd dengan Int untuk memperoleh bilangan bulat yang sesuai dengan kebutuhan aplikasi.

Dengan memahami cara kerja Rnd dan Randomize, Anda telah memiliki dasar yang kuat untuk membangun berbagai aplikasi VBA Excel yang lebih dinamis, interaktif, dan realistis.

Hubungi Kami

Kantor Berkreasi
Alamat :
Pens Sky Venture - Sukolilo Surabaya
Karangrejo Tmur 17 Surabaya

Email : kantor.berkreasi@gmail.com
WA : wa.me/6287761589881  
(Support  Mbak Ana)

Tim Pengembang

Dr. Rojabi Azharghany, M.Si, S.Sos
Dr. H. Agus Sulthoni Imami, S.Psi. M.Pd.I.
Ali Ishaq, M.Pd.
Didik Rahwiniyanto, S.Si., M.Pd.
Mujiburrohman, M.Pd.
Mohammad Zikky, S.ST, M.T
Amien sawedi, S.Pd.
Didik P Wicaksono, M.Pd.