Home » エクセルマクロ・Excel VBAの使い方 » VBA関数 » Randomizeステートメントとは?

Randomizeステートメントとは?

対象:Excel2003, Excel2007, Excel2010

乱数を発生させるVBA(Visual Basic for Applications)マクロをご紹介しました。

このようなコードをご紹介すると、
「Randomizeって何をするものですか?」
「Randomizeステートメントとは何なのですか? 」
といったご質問をいただくことがあります。

[スポンサードリンク]

Rnd関数を使ったサンプルマクロ

Randomizeステートメントの役割を知るには、以下のようなマクロを作成してテストをしてみるといいでしょう。

Sub Rnd関数のテスト()
 ActiveCell.Value = Rnd
End Sub

アクティブセルに、単精度浮動小数点型(Single型)の数値を入れるだけのマクロです。

上記のマクロを作成してまずは保存してください。保存するまで上記のマクロを絶対に実行しないでください。

保存したら、A1セルを選択した状態で上記の「Rnd関数のテスト」マクロを実行してください。次にA2セルを選択した状態でもう一度マクロを実行してください。

A1セルとA2セルには当然異なる乱数が表示されているはずです。

そのファイルを上書き保存をして一旦Excelを終了させてください。

上書き保存した、先のマクロの含まれているファイルをもう一度開き、B1セルを選択して「Rnd関数のテスト」マクロを実行してください。さらにB2セルを選択してマクロをもう一度実行してください。

A1:A2セルとB1:B2セルに表示されている数値を見て、Rnd関数やRandomizeステートメントについてあまりご存じない方は、「あれっ」と思うはずです。

Randomizeステートメントを追加したサンプルマクロ

では次に、先の「Rnd関数のテスト」マクロを以下のように修正してください。

Sub Rnd関数のテスト()
 Randomize
 ActiveCell.Value = Rnd
End Sub

「ActiveCell.Value = Rnd」の前に「Randomize」を追加しただけです。変更したらマクロを実行しないで上書き保存をしてExcelを終了してください。

変更した「Rnd関数のテスト」マクロの含まれるExcelファイルを開き直し、C1セルを選択して「Rnd関数のテスト」マクロを実行、C2セルを選択してもう一度実行して、上書き保存をしてExcelを終了させてください。

もう一度Excelファイルを開き直し、D1セルを選択して「Rnd関数のテスト」マクロを実行、D2セルを選択いてもう一度実行してください。

C1:C2セルの数値とD1:D2セルの数値を見ても、「あれっ」っと思うことはないはずです。

これがRandomizeステートメントの役目です。

これがヘルプに書いてある以下の文章の意味するところです。

Randomize ステートメントを使用しない場合、引数を指定しないで Rnd 関数を呼び出すと、最初に Rnd 関数を呼び出したときのシード値と同じ値が使用されます。それ以降は、直前に生成された数がシード値として使用されます。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » VBA関数 » Randomizeステートメントとは?

「VBA関数」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.