|
▼マイス さん:
こんばんは。
>教えて下さい<(__)>お願いします。
>6〜11の数字の中から、3つの数字をランダムにかつ
>ダブリ無しで抽出し、セルのA列6行目〜8行目に
>出力したいのですが、インデックスが有効範囲にないと出ました。
>i=7なのが原因だと思うのですが、どうすれば良いでしょうか・・・
コードを提示するときは、インデントを付けた記述をした方が
みやすいですよ!!
>Sub ex_A()
>Dim col_bef As Collection, col_aft As Collection
>Dim a As Integer, b As Integer, c As Integer
>Dim d As Integer, e As Integer, u As Integer
>Dim key As Integer, i As Integer
>a = 6 '母集団の頭番号
>b = 11 '母集団の尾番号
>c = 6 'セルの出力開始行
>d = 8 'セル出力終了行
>e = 1 'Excelの列
>Set col_bef = New Collection
>Set col_aft = New Collection
>For i = a To b
col_bef.Add i
Next i
Do Until col_bef.Count = 3 '三つ取り出すのですから、残りも3でよいですね
key = Int(Rnd(1) * (col_bef.Count)) + 1
col_aft.Add col_bef(key)
col_bef.Remove key
Loop
For i = 1 To 3 '三つ取り出すのですから、コレクションのKeyは1〜3
Cells(i, e) = col_aft(i)
Next i
>End Sub
なるべく、コードの変更を最小限にする という観点から、修正すると
こんなところでしょうか?
|
|