素人がExcelVBAによる「一人働き方改革」に挑むブログスマートフォン用の表示で見る素人がExcelVBAによる「一人働き方改革」に挑むブログExcelVBAネタです。VBA自作メソッド乱数を作るクラスランダムに並べ替える作業というのは滅多にないのだけれど、絶妙に忘れかけた頃に発生するので、akashi-keirin.hatenablog.comこのときにクラスまで作っていた。見直してみたら、イマイチやなあ、と(笑)。そんなわけで、作り直してみた。前に作ったやつは、あくまでも「1~最大数」をランダムに並べ替えるというだけだった。最小値と最小値を指定できるようにする要素数を指定できるようにするの2点を追加することにした。あと、クラス名とか変数名、プロパティ名も大幅に見直した。コードさっそく、クラスモジュールのコードを示す。クラス名は「RandomNumbers」に変えた。False)'///minNum~maxNumまでの整数をランダムに並べて配列に格納する。''///引数maxNum:最大数''///引数countOfElements:出来上がりの要素数''///引数minNum:最小数''///引数hasDuplicate:重複を許可するならTrue''///ただし、要素数が数値の種類数(maxNum-minNum+1)より大きいときは、''///Falseが渡されてもTrueに変える。Subまあ、大枠では変えていないので、説明は省略w使ってみる次のコードで実験。SubsetRandomNumbersメソッドを2回呼び出して、それぞれ取得したランダムな数列をイミディエイトに書き出すだけのコード。最大値10(第1引数)、最小値1(第3引数)で、重複を許さず(第4引数)に、ランダムに並べた10個(第2引数)の数字を得ることになる。最大値20(第1引数)、最小値11(第3引数)で、重複を許して(第4引数)、ランダムに並べた20個(第2引数)の数字を得ることになる。False)と、第4引数をFalseにしたとしても、setRandomNumbersメソッド内部でTrueに変えるようにしてある。(リスト1参照)これは、たとえば「1~5を重複しないようにランダムに10個並べろ!」とか言われても、そんなの、デキッコナイス!となるに決まっているからである。