[[20120510091624]] 『実行時間を早くする』(十六茶) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『実行時間を早くする』(十六茶)
 VBA初心者です。
 なんとか下のマクロを作成しました。
 実行すると結構な処理時間が掛かります。
 早くする方法を御教示お願いします。
 又、間違っている箇所がありましたら御指摘ください。
 宜しくお願いします。

 Sub test()
 Application.ScreenUpdating = False
 Sheets("sheet3").Select
    Dim cnt As Long
    Dim i As Long
    Dim n As Long
    Dim h As Long
    Dim k As Long
        cnt = WorksheetFunction.CountIf(Sheets("sheet2").Range("H:H"), "F*")
        n = 5
        h = 10
        For i = 1 To cnt
            For k = 1 To 17
                Cells(n, 1).Value = "0.00"
                Cells(n, 2).Value = "0.00"
                Cells(n, 3).Value = "0.00"
                Cells(n, 4).Value = "0.00"
                Sheets("sheet1").Cells(h, "Q").Copy
                Cells(n, 5).PasteSpecial Paste:=xlPasteValues
                Sheets("sheet1").Cells(h, "R").Copy
                Cells(n, 6).PasteSpecial Paste:=xlPasteValues

                n = n + 1
                h = h + 1
            Next
                n = n + 4
                h = h + 1
        Next
    Application.ScreenUpdating = True
 End Sub

 (EXCEL2010でVISTAです)


 どの様なデータがどの様なシートにどの様に成るのか
 サンプルデータと文章を使って
 説明しておかれると良いと思います。

 (HANA)

 コードだけからの単純な変更です。 HANA さんが言っておられるように内容の説明があると
 根本的なやり方のアドバイスもあるように思います。
 (Mook)

 Sub test2()
    Sheets("sheet3").Select
    Dim cnt As Long
    Dim i As Long
    Dim j As Long
    cnt = WorksheetFunction.CountIf(Sheets("sheet2").Range("H:H"), "F*")
    If cnt = 0 Then Exit Sub

    Dim arry()
    ReDim arry(1 To cnt * 21, 1 To 6)
    arry = Range("A5").Resize(cnt * 21, 6)

    For i = 0 To cnt - 1
        For j = 1 To 17
            arry(21 * i + j, 1) = "0.00"
            arry(21 * i + j, 2) = "0.00"
            arry(21 * i + j, 3) = "0.00"
            arry(21 * i + j, 4) = "0.00"
            arry(21 * i + j, 5) = Sheets("sheet1").Cells(10 + i, "Q").Value
            arry(21 * i + j, 6) = Sheets("sheet1").Cells(10 + i, "R").Value
        Next
    Next
    Range("A5").Resize(cnt * 21, 6) = arry
  End Sub

 (HANA)さん指摘有難う御座います。
 (Mook)さんのマクロをこれから勉強したいと思います。
 両名の方お忙しいところ有難う御座いました。
 (十六茶)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.