|
▼りんご さん:
.Itemプロパティとか .Countプロパティというのは
コレクションに必ず備わっているプロパティです。
コレクションというのは「同じ種類のオブジェクトのインスタンスの集合」です。
例えば、あるブックのワークシートの集合を「Worksheetsコレクション」といいます。
コレクションもオブジェクトとして扱います。ほとんどのコレクションの名前は
オブジェクトの名前の複数形になっています。
コレクション(集合)内の特定の要素を参照するときに.Itemプロパティを使います。
ActiveWorkbook.Worksheets.Item("Sheet1") '"Sheet1"という名前のメンバ
.Itemのあとの()内にはシート名を入れてもいいし、インデックス番号で指定しても
いいのはご存知と思います。
ActiveWorkbook.Worksheets.Item(1) '左から1番目にあるシート
のように。
Range("AとB")も Rangeコレクションです。(複数形にはなってませんが)
ですから範囲内の「個々のセル」にアクセスする手段を.Itemプロパティが
提供します。.Countプロパティのほうはコレクション内の「要素数」を返します。
RangeコレクションはWorksheetsコレクションとちがい行方向と列方向の2次元の
コレクションなので.Itemプロパティの引数も .Item(行Index, 列Index) のように
指定できます。
たとえば、Range("AとB")コレクションの実際のセル範囲が [A1:B10]だったと
しますと、Range("AとB").Item(2,1) は [A2]セルを指します。
RangeコレクションのItemプロパティで面白いのは、.Item(3) のように引数を一つ
だけ指定して単一セルが指定できることです。
[A1:B10].Item(3) は [A2]セルのことです。Itemプロパティの引数を一つだけ
指定すると、範囲の左上のセルをItem(1)としてまず右方向に第1行を移動し、
1行目が終わったらつづけて2行目を左から右へ...という順番でIndex番号が
振られます。
範囲内の「最後のセル」は範囲内の「要素の総数」と等しいので、
n = Range("AとB").Count
MsgBox Range("AとB").Item(n).Address(0,0)
として、"B10" が表示されるというわけです。
なお、
Itemプロパティは、通常、コレクションの「既定のプロパティ」であるため、
省略して表記されることが多いです。
ActiveWorkbook.Worksheets.Item("Sheet1")
が
ActiveWorkbook.Worksheets("Sheet1")
と表記されるのはこのためです。
Columns(1) とか Columns("A") というのは実は
Columnsコレクションの最初の要素、または"A"という名の要素という意味で
Columns.Item(1) とか Columns.Item("A")
の省略した書き方だったんです。
>重ね重ね申し訳ありませんが、ITEMというプロパティはウォッチで表示されていませんでした。(コーディング後は、表示されるようになりました。)
>
>ウォッチで、「全てのプロパティを表示する」という設定があるのでしょうか?
ちょっと意味が分かりません。
VBEのコードウィンドウ上で
Range("AとB").
とドットまで打ち込むと、下に利用可能なプロパティ・メソッドのリストが
ドロップダウンしますよね。そこに Itemプロパティも Countプロパティも
ありませんか?
隠しプロパティなども表示したいときは
とおりすぎ さんのコメントにあるとおり [F2]を押して
> オブジェクトブラウザで右クリックして非表示のメンバを表示にチェック入れると、
> 隠しオブジェクトなどが表示されるようになる。
同時に、コード入力時の「ドットまで打ち込」んだときに表示される
「利用可能なプロパティ・メソッドのリスト」にも 表示されるようになります。
|
|