EXCEL VBAマクロで5~10の範囲でランダムな整数を生成する方法

VBAの勉強を初めて、半年以上経過したかな〜ぐらいですが、だいぶ分かるようになってきました。
ゴリゴリの数百行〜数千行あるようなマクロは、まだ触れたことすらない(おそらく分からない)レベルですが、先日の「メールの一斉送信マクロ(PDF添付可)」のレベルであれば、書籍やブログの情報から、自分の環境でカスタマイズして使えるまでに実装することが出来るようになりました。
メール一斉送信マクロが気になる方は、以下にまとめています。コメントも頂けると嬉しいです!
「EXCEL: PDF添付&Outlookでメールを一斉送信【VBAマクロ】」

今回は、ランダム関数についての内容です。
プログラムの一部として、ランダムな数を使用したい場面がありましたので、まとめてみました。
また、1〜10みたいに、1から始まるランダム数だけでなく、5〜10みたいな範囲でも使用可能です。
今回のマクロを使うと、以下の画像のように、5〜10内でランダムな整数を自動生成できます。

概要

Rndという、「0以上1未満の乱数」を生成する関数を使用しています。
Rndで生成された「0以上1未満の乱数」に「ある整数」を掛け算と足算して、5〜10の範囲に収まるようにします。
このままだと、小数点以下の数も出てきてしまうので、Int関数で小数点以下を切り捨てて、整数にしています。

実行後

コード【VBAマクロ】

  1.  Sub Rnd5_10()
  2.     Dim i As Long, j As Long
  3.     Randomize '乱数系列を初期化
  4.  
  5.     For i = 1 To 10
  6.         For j = 1 To 10
  7.  
  8.             Cells(i, j) = Int(6 * Rnd + 5)
  9.  
  10.         Next j
  11.     Next i
  12.  
  13.  End Sub

コード【VBAマクロ】の解説

2.
Randomizeで、乱数系列を初期化しています。
5-6.
行(i)と列(j)を、1〜10まで二重ループさせています。
こうすることで、8行目のCells(i, j)と記述すると、10×10マス(百マス)に、自動生成した乱数を表示させています。
8.
今回の重要なプログラムは、この行だけです。
中身は、Int((最大値-最小値+1) * Rnd + 最小値)です。
Rnd関数で作られる乱数の範囲は、0以上1未満なので、必ず0.132みたいに、1の位が0の小数になります。
次に、(最大値-最小値+1)の計算をすると、10-5+1なので、6になります。
ということで、(最大値-最小値+1) * Rndを計算すると、0以上6未満の範囲の数になります。
例えば、Rndで0.99だった場合、6を掛けると、5.94になります。
この数に、5を足算します。
すると、5以上11未満の数になります。
Rndで0.99だった場合、6を掛けて、5を足すと、10.94です。
最後に、Int関数で小数点以下を切り捨てると、5から10までの整数の完成です。
10-11.
二重ループの終了です。

例えば、10〜20までの範囲で、ランダムに整数を準備したい場合は、最大値の部分に20を代入して、最小値の部分に10を入れるだけでOKです。
これを使って、百マス計算用のマクロも作ったので、ぜひご覧ください。
「EXCEL: 百マス計算 自動生成&採点【VBAマクロ】」
※重複のない1〜10までのランダムな整数を生成する方法を使っています。