Nombor Rawak VBA

Nombor Rawak Excel VBA

Untuk menghasilkan nombor rawak dalam vba, kita mempunyai fungsi terbina dalam yang disebut RND . Hanya memerlukan argumen nombor untuk menghasilkan nombor rawak dan ini juga merupakan parameter pilihan. Ia akan membuat nombor rawak yang lebih besar daripada 0 dan lebih kecil daripada 1.

Ini berfungsi sama seperti fungsi excel "RAND". Seperti yang saya nyatakan dalam fungsi lembaran kerja "RAND", di VBA juga kita dapat menghasilkan nombor rawak yang lebih besar dari 0 tetapi kurang dari 1.

Sekarang lihat sintaks fungsi "RND".

[Nombor]: Kami dapat menyampaikan hujah dengan tiga cara.

  • Sekiranya kita lulus nombor sebagai <0, ia akan terus menghasilkan nombor rawak yang sama setiap masa.
  • Sekiranya kita memberikan nombor sebagai 0, ia akan mengulangi nombor terakhir yang diberikannya.
  • Sekiranya kita lulus nombor> 0, ia tetap memberi anda nombor rawak yang berbeza iaitu nombor rawak seterusnya dalam urutan.

Bagaimana Menjana Nombor Rawak menggunakan Kod VBA?

Anda boleh memuat turun Templat Excel Nombor Rawak VBA ini di sini - Templat Excel Nombor Rawak Rawak VBA

Contoh # 1

Sekarang kita akan melihat contoh mudah menggunakan fungsi "RND". Ikuti langkah di bawah untuk menulis kod VBA anda sendiri.

Langkah 1: Nyatakan pemboleh ubah sebagai "Integer" di VBA

Kod:

 Sub Rnd_Contoh1 () Dim K Sebagai Sub End Integer 

Langkah 2: Sekarang tetapkan nilai ke pemboleh ubah "k" hingga fungsi " RND ".

Kod:

 Sub Rnd_Contoh1 () Dim K Sebagai Integer K = Rnd () Akhir Sub 

Langkah 3: Tunjukkan nilai yang dikembalikan oleh pemboleh ubah "k" di kotak mesej .

Kod:

 Sub Rnd_Contoh1 () Dim K Sebagai Integer K = Rnd () MsgBox K Akhir Sub 

Sekarang jalankan makro excel dan lihat apa hasilnya.

Lihatlah apa yang telah berlaku.

Ini menunjukkan hasilnya sebagai 1 di mana fungsi "RND" hanya dapat mengembalikan nombor yang lebih besar daripada sifar tetapi kurang dari 1.

Anda mesti memikirkan perkara yang salah di sini.

Perkara yang salah di sini adalah jenis jenis data yang telah kami tetapkan pada pemboleh ubah "k".

Sekiranya anda melihat kembali pemboleh ubah, kami telah menyatakan bahawa kami telah menetapkan jenis data sebagai Integer. Oleh kerana kami telah menetapkan pemboleh ubah sebagai Integer, ia hanya dapat menunjukkan nombor bulat antara -32768 hingga 32767.

Setiap kali RND mengembalikan nombor perpuluhan VBA menukar nombor perpuluhan menjadi bilangan bulat terdekat iaitu 1.

Oleh itu, untuk menjadikan formula berfungsi dengan betul, nyatakan pemboleh ubah sebagai " Double ".

"Double" adalah jenis data dalam VBA yang dapat menahan nilai perpuluhan.

Kod:

 Sub Rnd_Contoh1 () Dim K Sebagai Double K = Rnd () MsgBox K Akhir Sub 

Sekarang kod dan lihat apa hasilnya.

Klik ok dan jalankan sekali lagi dan lihat apa hasilnya.

Kali ini kami mendapat keputusan yang berbeza. Oleh kerana "RND" adalah fungsi yang tidak stabil, ia menghasilkan hasil yang berbeza setiap kali anda menjalankan kod tersebut.

Contoh # 2 - Dapatkan Nombor Rawak yang Sama Setiap Kali

Seperti yang telah kita lihat sebelumnya, fungsi "RND" menghasilkan semula hasilnya setiap kali kita melaksanakan kod tersebut. Untuk mendapatkan nombor rawak yang sama, berulang kali, kita perlu meneruskan argumen sebagai sifar.

Kod:

 Sub Rnd_Contoh2 () Dim K Sebagai Double K = Rnd (0) MsgBox K Akhir Sub 

Ini akan menghasilkan nombor yang sama berulang kali ketika kita melaksanakan kod tersebut.

Contoh # 3 - Hasilkan Nombor Rawak Keseluruhan

Kita juga boleh menghasilkan nombor bulat dengan menggunakan fungsi VBA lain atau nombor input lain. Sebagai contoh lihat kod di bawah.

Kod:

 Sub Rnd_Contoh3 () Dim K Sebagai Double K = 1 + Rnd * 100 MsgBox K Akhir Sub 

Kod ini akan menghasilkan nombor bulat secara rawak dengan titik perpuluhan setiap kali kita melaksanakan kod tersebut.

Sekiranya anda melihat nombor bulat tanpa titik perpuluhan maka kita boleh menggunakan kod di bawah.

Kod:

 Sub Rnd_Contoh3 () Dim K Sebagai Double K = CInt (1 + Rnd * 100) MsgBox K End Sub 

Ini akan terus menghasilkan nombor bulat dari 1 hingga 100.