|
セル範囲の参照の仕方についての補足ですが、
たとえば
> 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から見て、
□
■
■
■
■
■
■
の不連続セルに、同一の値を代入しようとしているのがお分かりになるかと
思います。
|
|