|
>>Cells(i, 5).Value = colNumber(i) 'コレクションの中からi番目の要素をとりだす。
>
>これもやってみたのですが、実行時エラー「型が一致しません」に
>成っちゃいます。どうして?どこかまちがえたかな?
For i = 1 To 20
Cells(i, 5).Value = colNumber(i)
Next
となってますか?私の環境では正常に動きますけど・・・
なお、For Each 〜 Nextを使用するとこんな感じです。
Dim rngDest As Range
Set rngDest = Cells(1, 5) '出力開始行セット
For Each vntRndNo In colNumber
rngDest.Value = vntRndNo
Set rngDest = rngDest.Offset(1) '出力行インクリメント
Next vntRndNo
セルへの出力処理を、配列を使ってやればより高速化が望めます。
Sub test5()
Dim colNumber As New Collection
Dim intRndNo As Integer
Dim intRndArray() As Integer
'エラートラップ
On Error Resume Next
Do
intRndNo = Int(300 * Rnd) + 1
'コレクション格納
colNumber.Add intRndNo, "Key" & intRndNo
Loop Until colNumber.Count = 20
On Error GoTo 0
'配列数確定
ReDim intRndArray(1 To 20, 1 To 1)
'コレクションから配列に代入
For i = 1 To 20
intRndArray(i, 1) = colNumber(i)
Next i
'セルに一括出力
Cells(1, 5).Resize(20, 1).Value = intRndArray
End Sub
|
|