|
▼Jaka さん:
>セルを選択するのと選択しないのと速度差。
>test3は特殊ですが。
>
> 速いPCをお使いでしたら、10000にしてみてください。
> ↓注)せいぜい15000まで、それ以上だと配列で問題があるかも。
>Const Cnt As Long = 5000
>
>Sub test1()
>Dim i As Long
>'↓のコードのコメントを外したのも試してみてください。
>Application.ScreenUpdating = False
>stt = Now()
>For i = 1 To Cnt Step 2
> Sheets("Sheet1").Select
> Cells(i, 1).Select
> ActiveCell.Value = i
> Sheets("Sheet2").Select
> Cells(i + 1, 2).Select
> ActiveCell.Value = i + 1
>Next
>Sheets("Sheet1").Select
>Range("C1").Select
>ActiveCell.Value = Format(Now() - stt, "hh:mm:ss")
>Application.ScreenUpdating = True
>MsgBox "終了"
>End Sub
>
>Sub test2()
>Dim i As Long
>stt = Now()
>For i = 1 To Cnt Step 2
> Sheets("Sheet1").Cells(i, 1).Value = i
> Sheets("Sheet2").Cells(i + 1, 2).Value = i + 1
>Next
>Sheets("Sheet1").Range("D1").Value = Format(Now() - stt, "hh:mm:ss")
>MsgBox "終了"
>End Sub
>
>Sub test3()
>Dim i As Long, tb1(1 To Cnt, 1 To 1) As Variant, tb2(1 To Cnt, 1 To 1) As Variant
>stt = Now()
>For i = 1 To Cnt Step 2
> tb1(i, 1) = i
> tb2(i + 1, 1) = i + 1
>Next
>Sheets("Sheet1").Range("A1").Resize(Cnt).Value = tb1
>Sheets("Sheet2").Range("B1").Resize(Cnt).Value = tb2
>Erase tb1, tb2
>Sheets("Sheet1").Range("E1").Value = Format(Now() - stt, "hh:mm:ss")
>MsgBox "終了"
>End Sub
サンプルまでつくっていただいて恐縮です。
テストをしてみましたがこんなに速度に差がでるものなんですね・・・><;
ちなみにtest3のマクロが理解できないですorz
もしよろしければご解説をお願いします。
また私が購入した入門本にはワークシートはworksheet(s)と記述するようにあったのですが、これとsheet(s)の違いはなんでしょうか??
厚かましいとは思いますがよろしくお願いします。。
|
|