RangeオブジェクトにおけるCellsプロパティとItemプロパティの違いが分かりません。
ご教示お願い致します。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
直接の回答ではありませんが、まずはRangeとCellsについて正確に理解できると良いです。
Range
・変数宣言部に登場するRangeはRangeオブジェクトです。
・実際に処理を行うコード部分に登場するRangeはRangeプロパティです。RangeプロパティはWorkSheetのプロパティであって、単一のセルまたはセル範囲を表すRangeオブジェクトを返します。
Cells
・Cellsという名のオブジェクトは存在しません。
・CellsプロパティはWorkSheetまたはRangeプロパティのプロパティで、親オブジェクトの全セルを含むRangeオブジェクトを返します。更にItemプロパティで単一のセルを表すRangeオブジェクトを返します。
投稿2020/12/15 11:05
編集2021/01/27 13:37総合スコア1063
0
Range.Cells プロパティ (Excel) | Microsoft Docs
Range.Item プロパティ (Excel) | Microsoft Docs
上記の公式の説明を読んでもあまりよく理解できませんよね。
私は下記のように理解しています。(間違っているかもしれませんが)
Cellsは複数形になっているので、複数のセル範囲を返す(単一の場合もありますが)
Item は単数なので一つのセルしか返すことができない。
vba
1 Debug.Print Range("A1:C7").Cells.Address '$A$1:$C$7 2 Debug.Print Range("A1:C7").Cells(2, 2).Address '$B$2 3 4 Debug.Print Range("A1:C7").Item.Address 'コンパイルエラー 5 Debug.Print Range("A1:C7").Item(2, 2).Address '$B$2
Range("A1:C7").Cells(2, 2)
というのは、たぶん Range("A1:C7").Cells.Item(2, 2)
の省略形だと思う。
上でItemは単一のセルを返すと説明したが、下記だと複数のセル範囲を返す。
vba
1 Debug.Print Range("A1:C7").Columns.Item(1).Address '$A$1:$A$7 2 Debug.Print Range("A1:C7").Rows.Item(1).Address '$A$1:$A$7
これは、列、行 を対象としているためだと思われる。
投稿2020/12/15 07:49
総合スコア34075
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。