| 
    
     |  | セル範囲の参照の仕方についての補足ですが、 
 たとえば
 >   With Worksheets("DATA")
 >     Set cRange = .Range("AA1")  '抽出条件範囲先頭セル
 >     cRange(1, 1).Value = .Range("F1").Value 'F列見出し
 >     cRange(1, 2).Value = .Range("L1").Value 'L列見出し
 >     cRange(1, 3).Value = .Range("R1").Value 'R列見出し
 >     cRange.Range("A2,B3,C4,D5,E6,F7").Value = ss
 >   End With
 
 と書いたとき、
 cRange(1, 1) という記述は
 cRange.Item(1, 1) を省略して書いたもので、
 具体的には Range("AA1").Item(1,1) すなわち [AA1]セルそのもの
 のことです。
 同じように、
 cRange(1, 2) → Range("AA1").Item(1,2) → [AB1]
 cRange(1, 3) → Range("AA1").Item(1,3) → [AC1]
 同じように、
 cRange(1, 0) → Range("AA1").Item(1,0) → [Z1]
 cRange(1, -1) → Range("AA1").Item(1,-1) → [Y1]
 となります。
 
 また、
 cRange.Range("A2,B3,C4,D5,E6,F7").Value = ss
 は、複数セルを相対指定するときによく用いられる記法です。
 このばあい、
 cRange.Range("A1") とは cRangeを起点とする"A1"番目の
 単一セル、すなわち cRange.Item(1, 1) と同じです。
 ↑の例では単一セルの指定でしたから、Rangeプロパティを使う
 メリットはどこにもありません。Itemプロパティと同じです。
 ↓あるセル(範囲)を基点として複数セル範囲を指定するとき、
 Rangeプロパティの効用が出てきます。
 Range("AA1").Range("A1:C1") → [AA1:AC1]
 Range("AA1").Range("A1,B2,C3") → [AA1,AB2,AC3]
 
 >     cRange.Range("A2,B3,C4,D5,E6,F7").Value = ss
 は、
 cRangeから見て、
 □
 ■
 ■
 ■
 ■
 ■
 ■
 
 の不連続セルに、同一の値を代入しようとしているのがお分かりになるかと
 思います。
 
 
 |  |