VBAランダム化| ランダム化ステートメントの使用方法は?

VBAでステートメントをランダム化する

VBA Randomizeステートメントは、RND関数を適用する前に追加する単純なワンライナーステートメントです。ブックが再度開かれるたびに、Randomizeステートメントは、コンピューターのシステム時間に応じて、RND関数に新しいシード番号を提供します。

Randomizeステートメントについて説明する前に、VBAを使用した簡単なRND関数を紹介します。

ワークシート関数「RAND」として、VBAでも「RND」は0より大きく1より小さい乱数を生成します。

次に、「RND」関数の構文を見てみましょう。

[数]: 3つの方法で引数を渡すことができます。

  • 数値を<0として渡すと、毎回同じ乱数が生成され続けます。
  • 番号を0として渡すと、指定した最新の番号が繰り返されます。
  • > 0の数を渡すと、異なる乱数、つまりシーケンス内の次の乱数が与えられ続けます。

例については、以下のコードを見てください。

コード:

 Sub RND_Example()Debug.Print Rnd End Sub 

即時ウィンドウでコードを実行すると、以下の番号が表示されます。

同様に、このコードをさらに3回実行すると、以下の数値が表示されます。

次に、ブックを閉じて再度開きます。

次に、Visual BasicEditorウィンドウに戻ります。

これで、直接のウィンドウは空できれいになりました。

ここでも、コードを4回実行して、即時ウィンドウに表示される数値を確認します。

上記と同じ番号を取得しました。

これは乱数のようには見えません。ファイルを再度開くたびに、最初から同じ番号が取得される傾向があるためです。

では、ブックが再開されたかどうかに関係なく、どのようにして乱数を生成するのでしょうか。

「Randomize」ステートメントを使用する必要があります。

VBAランダム化ステートメントの使用方法は?

このVBARandomize Excelテンプレートはここからダウンロードできます– VBA RandomizeExcelテンプレート

例1

乱数を取得するには、RND関数の前に単純なワンライナー「Randomize」を追加するだけです。

コード:

 Sub Randomize_1()Randomize Debug.Print Rnd End Sub 

次に、コードを4回実行して、何が得られるかを確認します。

ローカルウィンドウに上記の数値が生成されました。

次に、ファイルを閉じて、もう一度ファイルを開きます。

いつものように、VisualBasicウィンドウの白紙の状態から始めます。

ここで、もう一度コードを実行して、今回取得する数値を確認します。

ワオ!!!今回は違う数字が出ました。

RND関数の前にRandomizeステートメントを追加したため、ファイルを再度開くたびに異なる乱数が取得されます。

これは乱数のようですね。

例2

1より大きい乱数

これまで見てきたように、「RND」関数は0から1までの数値しか生成できません。ただし、複数の乱数を生成するには、ワークシート関数クラスで使用できる「RANDOMBETWEEN」を使用する必要があります。

したがって、1より大きい乱数を生成するには、以下のコードを使用する必要があります。

コード:

 Sub Randomize_2()Randomize Debug.Print Rnd * 100 End Sub 

次に、コードを実行して、何が得られるかを確認します。

このように、VBAの「Randomize」ステートメントを使用して、Excelファイルを再度開くたびに乱数を生成できます。