| 
    
     |  | 処理速度向上につき、アドバイスを頂きたく、投稿致しました。 
 下記のロジックの改善点にお気づきの方は、どんなことでも良いので
 ご教示頂けると幸いです。
 
 ※integer より long が良いのは学びました。
 
 下記は、シートAにある値を、シートBの適切なセルに表示させるもので
 シートAを参照する式を埋め込むことで、シートBに値をコピーしています。
 
 入り組んでいて分かり辛いのですが、ループ、分岐、変数の使い方などが
 キーになると思ったので、なるべくそのままのコードを記載しました。
 
 ◎実際の処理では、下記のようなロジックが10個くらい連なります。
 
 【シートAの特徴】
 CSVから読み込んだデータが貼り付いていて、各列、行に名前をつけています。
 (例)列名 <10列分> _1 〜 _10
 行名 <50行分> PHNYL1 〜 PHNYL50
 
 【処理概要】
 シートBの"HNY_INPUT_FLAG"と名前がついている列に'1'が入力されている行に
 シートAの値を適宜セットしていく。
 
 ※シートBの"HNY_INPUT_FLAG"列+3の列に'1'が入力されている行数
 =シートAの行数(ここでは50。)
 
 -----------
 
 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
 
 intInputFlagCol = Range("HNY_INPUT_FLAG").Column '入力可能な項目(行)フラグが設定されている列
 i = 1
 
 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).Formula _
 = "=PHNYL" & i & " _" & k
 
 k = k - 1
 Next
 
 '式ではなく値のみ表示するよう設定
 Range(Cells(intRow, INT_HNY_PRJSTART_COL), _
 Cells(intRow, INT_HNY_PRJSTART_COL + 9)).Copy
 Range(Cells(intRow, INT_HNY_PRJSTART_COL), _
 Cells(intRow, INT_HNY_PRJSTART_COL + 9)).PasteSpecial Paste:=xlValues
 Application.CutCopyMode = False
 End If
 
 i = i + 1
 End If
 Next
 
 |  |