Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


54515 / 76732 ←次へ | 前へ→

【27007】Re:VBA処理速度向上のアドバイス求む!
お礼  yuki  - 05/7/26(火) 13:41 -

引用なし
パスワード
   最終的に、以下のようなソースにしたら、5割以上の減速になりました。
−配列を使う
−With を使って、Select をしない
−カウント処理用変数を integer -> long に。

どうも有難うございました。
-----------

Public Const INT_HNY_START_ROW As Integer = 5   
Public Const INT_HNY_END_ROW As Integer = 55

Dim intRow As Integer
Dim intInputFlagCol As Integer

★ Dim vntAryInputData As Variant

★ With Worksheets("シートA")  '▼▼▼


  intInputFlagCol = .Range("HNY_INPUT_FLAG").Column '入力可能な項目(行)フラグが設定されている列
  i = 1

  'INPUTシートのデータを配列に読込
★  With Worksheets("INPUT")
★    vntAryInputData = .Range(.Cells(.Range("PHNYL1").Row, 2), .Cells(.Range("PHNYL53").Row, 15))
★  End With

  For intRow = INT_HNY_START_ROW To INT_HNY_END_ROW Step 1
  
   If .Cells(intRow, intInputFlagCol + 3).Value = "1" Then  'iのカウントアップ用Ifブロック

    If .Cells(intRow, intInputFlagCol).Value = "1" Then
    
      k = 10
      For j = 1 To 10
★       .Cells(intRow, INT_HNY_PRJSTART_COL - 1 + j).Value = vntAryInputData(i, k)
        k = k - 1
      Next
      
    End If
    
    i = i + 1
   End If
  Next

  End With  '▲▲▲

0 hits

【26858】VBA処理速度向上のアドバイス求む! yuki 05/7/21(木) 15:27 質問
【26859】Re:VBA処理速度向上のアドバイス求む! IROC 05/7/21(木) 15:51 回答
【26860】Re:VBA処理速度向上のアドバイス求む! yuki 05/7/21(木) 15:59 質問
【26861】Re:VBA処理速度向上のアドバイス求む! IROC 05/7/21(木) 16:51 回答
【26862】Re:VBA処理速度向上のアドバイス求む! yuki 05/7/21(木) 17:01 お礼
【26863】Re:VBA処理速度向上のアドバイス求む! Jaka 05/7/21(木) 17:34 発言
【26864】Re:VBA処理速度向上のアドバイス求む! yuki 05/7/21(木) 17:49 お礼
【27007】Re:VBA処理速度向上のアドバイス求む! yuki 05/7/26(火) 13:41 お礼

54515 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free