Nomor Acak VBA Excel
Untuk menghasilkan nomor acak di vba kita memiliki fungsi inbuilt yang disebut RND . Ini hanya membutuhkan argumen sejumlah untuk menghasilkan angka acak dan ini juga merupakan parameter opsional. Ini akan membuat angka acak yang lebih besar dari 0 dan lebih kecil dari 1.
Ini bekerja persis sama dengan fungsi excel "RAND". Seperti yang saya ceritakan di worksheet function "RAND", di VBA juga kita bisa menghasilkan angka acak yang lebih besar dari 0 tapi kurang dari 1.
Sekarang lihat sintaks dari fungsi "RND".
[Angka]: Kita bisa menyampaikan argumen dengan tiga cara.
- Jika kita melewatkan nomor sebagai <0, itu terus menghasilkan nomor acak yang sama setiap saat.
- Jika kita melewatkan angka sebagai 0, itu akan mengulangi angka terbaru yang telah diberikan.
- Jika kita melewatkan angka> 0, itu tetap memberikan Anda nomor acak yang berbeda yaitu nomor acak berikutnya dalam urutan.
Bagaimana Cara Menghasilkan Angka Acak menggunakan Kode VBA?
Anda dapat mengunduh Templat Excel Angka Acak VBA ini di sini - Templat Excel Angka Acak VBAContoh 1
Sekarang kita akan melihat contoh sederhana menggunakan fungsi "RND". Ikuti langkah-langkah di bawah ini untuk menulis kode VBA Anda sendiri.
Langkah 1: Deklarasikan variabel sebagai "Integer" di VBA
Kode:
Sub Rnd_Example1 () Dim K Sebagai Integer End Sub
Langkah 2: Sekarang tetapkan nilai ke variabel "k" melalui fungsi " RND ".
Kode:
Sub Rnd_Example1 () Dim K Sebagai Integer K = Rnd () End Sub
Langkah 3: Tampilkan nilai yang dikembalikan oleh variabel "k" di kotak pesan .
Kode:
Sub Rnd_Example1 () Dim K Sebagai Integer K = Rnd () MsgBox K End Sub
Sekarang jalankan makro excel dan lihat apa hasilnya.
Lihat apa yang terjadi.
Ini menunjukkan hasil sebagai 1 di mana fungsi "RND" hanya dapat mengembalikan angka yang lebih besar dari nol tetapi kurang dari 1.
Anda pasti berpikir tentang apa yang salah di sini.
Hal yang salah di sini adalah jenis tipe data yang telah kita tetapkan ke variabel "k".
Jika Anda melihat kembali variabel yang telah kami nyatakan, kami telah menetapkan tipe data sebagai Integer. Karena kami telah menetapkan variabel sebagai Integer, itu hanya dapat menampilkan bilangan bulat antara -32768 hingga 32767.
Setiap kali RND mengembalikan angka desimal, VBA mengubah angka desimal menjadi bilangan bulat terdekat yaitu 1.
Jadi, agar rumus berfungsi dengan baik, deklarasikan variabel sebagai " Double ".
"Double" adalah tipe data di VBA yang dapat menampung nilai desimal.
Kode:
Sub Rnd_Example1 () Dim K Sebagai Ganda K = Rnd () MsgBox K End Sub
Sekarang kodenya dan lihat apa hasilnya.
Klik ok dan jalankan sekali lagi dan lihat apa hasilnya.
Kali ini kami mendapatkan hasil yang berbeda. Karena "RND" adalah fungsi volatil yang mereproduksi hasil yang berbeda setiap kali Anda mengeksekusi kode.
Contoh # 2 - Dapatkan Nomor Acak yang Sama Setiap Saat
Seperti yang telah kita lihat pada contoh sebelumnya, fungsi "RND" mereproduksi hasil setiap kali kita menjalankan kode. Untuk mendapatkan nomor acak yang sama, berulang kali, kita perlu meneruskan argumen sebagai nol.
Kode:
Sub Rnd_Example2 () Dim K Sebagai Ganda K = Rnd (0) MsgBox K End Sub
Ini akan menghasilkan angka yang sama berulang kali saat kita mengeksekusi kodenya.
Contoh # 3 - Hasilkan Bilangan Acak Utuh
Kami juga dapat menghasilkan bilangan bulat dengan menggunakan fungsi VBA lain atau bilangan input lainnya. Untuk contoh lihat kode di bawah ini.
Kode:
Sub Rnd_Example3 () Dim K Sebagai Ganda K = 1 + Rnd * 100 MsgBox K End Sub
Kode ini akan menghasilkan bilangan bulat acak dengan titik desimal setiap kali kita menjalankan kode.
Jika Anda melihat bilangan bulat tanpa titik desimal maka kita dapat menggunakan kode di bawah ini.
Kode:
Sub Rnd_Example3 () Dim K Sebagai Ganda K = CInt (1 + Rnd * 100) MsgBox K End Sub
Ini akan terus menghasilkan bilangan bulat dari 1 hingga 100.