| 
    
     |  | ▼ponpon さん、Asakiさん、おはようございます。 
 > バッチリだったのですが、ここまでできたら、シートを使わないで何とかならないものかと、配列を使って考えたのですが、
 いくつか方法はあると思います。
 1.配列の中身をループで調べる方法
 変数と変数の比較だから処理は速いですよ
 
 2.Application.Match関数を使う方法
 配列にも使えます。但し、上限があります。
 
 3.乱数を文字列として配列に格納する方法(Filter関数を使用する)
 
 
 配列の数が5000ぐらいまでとして、2の方法を使用して・・・。
 
 '==================================
 Sub test()
 Dim rndNO(1 To 20) As Integer
 Dim intNO As Integer
 Dim p As Integer
 Dim t As Integer
 Randomize
 For p = 1 To 20
 t = 30
 intNO = Int(Rnd() * t) + 1  '1からtまでの乱数の発生
 
 Do Until IsError(Application.Match(intNO, rndNO(), 0)) '同じ数字がでたら、違うまでループ
 
 intNO = Int(Rnd() * t) + 1  '1からtまでの乱数の発生
 
 Loop
 rndNO(p) = intNO
 Next
 
 For i = 1 To 20
 Cells(i, 1).Value = rndNO(i)
 Next
 End Sub
 
 
 これは、トピック変えたほうがいいかもしれませんよ!!
 
 
 >
 >  Dim rndNO(1 To 20) As Integer
 >  Dim intNO As Integer
 >  Dim p As Integer
 >  Dim t As Integer
 >
 >  For p = 1 To 20
 >   t = 30
 >   Randomize
 >   rndNO(p) = Int(Rnd() * t) + 1  '1からtまでの乱数の発生
 >   intNO = rndNO(p)
 >
 >   Do Until rndNO(p) <> intNO '同じ数字がでたら、違うまでループ
 >               ↑
 >        ここの式が思いつかないしわからない。
 >
 >   rndNO(p) = Int(Rnd() * t) + 1
 >   intNO = rndNO(p)
 >
 >   Loop
 >
 >   Next
 > コレクションを勉強したらなんていわないで、この配列を使って何とかならないものでしょうか。
 > rndNO(p)が、今まで作った配列の中にあるかないかを調べるような式や関数をどなたか教えていただけないでしょうか? このコードからは無理ならば、諦めてシートを使います。
 > よろしくお願いします。
 
 
 |  |