Générer des nombres aléatoires à l'aide de la fonction VBA RND

Table des matières

Nombres aléatoires Excel VBA

Pour générer des nombres aléatoires dans vba, nous avons une fonction intégrée appelée RND . Il suffit d'un argument un nombre pour générer des nombres aléatoires et c'est aussi un paramètre facultatif. Cela créera des nombres aléatoires supérieurs à 0 et inférieurs à 1.

Cela fonctionne exactement de la même manière que la fonction Excel «RAND». Comme je l'ai dit dans la fonction de feuille de calcul «RAND» dans VBA également, nous pouvons générer des nombres aléatoires supérieurs à 0 mais inférieurs à 1.

Jetez maintenant un œil à la syntaxe de la fonction «RND».

(Nombre): Nous pouvons transmettre l'argument de trois manières.

  • Si nous transmettons le nombre <0, il continue à générer le même nombre aléatoire à chaque fois.
  • Si nous passons le nombre à 0, il répétera le numéro le plus récent qu'il a donné.
  • Si nous passons le nombre> 0, cela continue de vous donner différents nombres aléatoires, c'est-à-dire le prochain nombre aléatoire de la séquence.

Comment générer des nombres aléatoires à l'aide du code VBA?

Exemple 1

Nous allons maintenant voir l'exemple simple d'utilisation de la fonction «RND». Suivez les étapes ci-dessous pour écrire vous-même le code VBA.

Étape 1: Déclarez la variable comme «Integer» dans VBA.

Code:

Sub Rnd_Example1 () Dim K As Integer End Sub

Étape 2: Attribuez maintenant la valeur à la variable «k» via la fonction « RND ».

Code:

Sub Rnd_Example1 () Dim K As Integer K = Rnd () End Sub

Étape 3: Afficher la valeur renvoyée par la variable «k» dans la boîte de message .

Code:

Sub Rnd_Example1 () Dim K As Integer K = Rnd () MsgBox K End Sub

Maintenant, exécutez la macro Excel et voyez quel est le résultat.

Regardez ce qui s'est passé.

Il affiche le résultat comme 1 où la fonction «RND» ne peut renvoyer que des nombres supérieurs à zéro mais inférieurs à 1.

Vous devez penser à ce qui ne va pas ici.

La mauvaise chose ici est le type de type de données que nous avons attribué à la variable «k».

Si vous regardez la variable que nous avons déclarée, nous avons assigné le type de données Integer. Étant donné que nous avons attribué à la variable Integer, elle ne peut afficher que les nombres entiers compris entre -32768 et 32767.

Chaque fois que RND renvoie le nombre décimal, VBA convertit le nombre décimal en entier le plus proche, c'est-à-dire 1.

Donc, pour que la formule fonctionne correctement, déclarez la variable comme " Double ".

«Double» est le type de données dans VBA qui peut contenir des valeurs décimales.

Code:

Sub Rnd_Example1 () Dim K As Double K = Rnd () MsgBox K End Sub

Maintenant, le code et voyez quel est le résultat.

Cliquez sur ok et exécutez une fois de plus et voyez quel est le résultat.

Cette fois, nous avons obtenu un résultat différent. Puisque «RND» est une fonction volatile par nature, il reproduit des résultats différents chaque fois que vous exécutez le code.

Exemple # 2 - Obtenez le même nombre aléatoire à chaque fois

Comme nous l'avons vu dans l'exemple précédent e, la fonction «RND» reproduit le résultat à chaque exécution du code. Afin d'obtenir le même nombre aléatoire, encore et encore, nous devons passer l'argument comme zéro.

Code:

Sub Rnd_Example2 () Dim K As Double K = Rnd (0) MsgBox K End Sub

Cela produira le même nombre encore et encore lorsque nous exécuterons le code.

Exemple # 3 - Générer un nombre aléatoire entier

Nous pouvons également générer des nombres entiers en utilisant d'autres fonctions VBA ou d'autres nombres d'entrée. Par exemple, regardez le code ci-dessous.

Code:

Sub Rnd_Example3 () Dim K As Double K = 1 + Rnd * 100 MsgBox K End Sub

Ce code générera des nombres entiers aléatoires avec des points décimaux chaque fois que nous exécutons le code.

Si vous regardez les nombres entiers sans points décimaux, nous pouvons utiliser le code ci-dessous.

Code:

Sub Rnd_Example3 () Dim K As Double K = CInt (1 + Rnd * 100) MsgBox K End Sub

Cela continuera à générer les nombres entiers de 1 à 100.

Articles intéressants...