この記事を読むのに必要な時間は約 4 分です。

 

VBAで乱数を生成する方法についての記事です。

 

Rndという関数を使うんですが、単純にRndと書いて実行しても、思ったような結果は得られないと思います。

 

整数の数字が欲しければ、ある数字を掛け算しないといけません。

 

数学の公式みたいなものですが、テストじゃないので必要なときに何回見直しても大丈夫です。
今回は、簡単な使用例も交えて紹介します。

VBAの乱数を生成する関数はRnd

まずは、Rndという関数を実行してみたいと思います。

 

結果はDebug.Printで表示して確認です。

このソースコードをF5キー連打した結果が、下図のイミディエイトです。

VBA_乱数を作るRndの使い方

確かにバラバラの数字だけど、欲しいのはこんなのじゃないですよね。

 

特定の範囲を指定して、ランダムな整数が欲しいはずです。

範囲指定して乱数を発生させるRndの使い方

書き方はこれです。

 

 

引数に最小値:lMinと、最大値:lMaxを渡して、最小値から最大値の間の整数を返す関数を書きました。

VBA_乱数を作るRndの使い方

ソースコードはこちら。

1~10までの数字をランダムに表示してみた

先ほどの関数を使って、範囲を指定して数字をランダムに表示してみたいと思います。

 

何度もF5キー連打は少々カッコ悪いので、For文で20回ループさせて、生成した数字をDebug.Printでイミディエイトウィンドウに表示させます。

 

20回乱数を生成した結果はこちら。

VBA_乱数を作るRndの使い方

1~10の間だと、さすがに同じ数字が連続することもよくあります。
100くらいあれば、被ることはそれほどありません。

 

ちなみにIntは整数にする関数です。
外せば小数の結果も得られます。

小数点以下の数字も切り捨てられず表示されました。

VBA_乱数を作るRndの使い方

まとめ:エクセルVBAで乱数を範囲指定して生成する方法

VBAでRndを使って乱数を生成する方法でした。

 

よく使われる、整数の結果を得たい場合のやり方をもう1度書きます。

 

特定の範囲でランダムに数字を選ぶので、抽選するときなどに利用されることもあります。

 

先日書いた抽選マクロの記事も、何か参考になるかもしれません。

 

最後までお読みいただき、ありがとうございました。