Cells プロパティ、 Rowsプロパティ、 Columnsプロパティ
以下のVBAサブルーチン Cells_Rows_Columns は、Excelのシート上のセル、行、および列に関連するさまざまな操作をデモンストレーションします。
Sub Cells_Rows_Columns()
Debug.Print Sheet1.Cells(1, 2).Address
' シート1のセル(1,2)のアドレスを表示します(例: "$B$1")。
' 実際には Range オブジェクトの非表示かつ既定のメンバーである _Default プロパティを省略している。
' 省略せずに記載すると、以下となる
Debug.Print Sheet1.Cells.[_Default](1, 2).Address
' 省略されているプロパティ _Default を明示すると、このようになる。結果は上と同じ。
With Sheet1
Debug.Print Cells.Address ' 全セルのアドレスを表示します(例: "$1:$1048576")。
Debug.Print Cells.CountLarge ' 全セルの数を表示します(例: 17179869184)。
Debug.Print Cells(1).Address ' 最初のセルのアドレスを表示します(例: "$A$1")。
Debug.Print Cells(1, 1).Address ' 具体的にセル(1,1)のアドレスを表示します(例: "$A$1")。
Debug.Print Rows.Address ' 全行のアドレスを表示します(例: "$1:$1048576")。
Debug.Print Rows.CountLarge ' 全行の数を表示します(例: 1048576)。
Debug.Print Rows(1).Address ' 最初の行のアドレスを表示します(例: "$1:$1")。
'Debug.Print Rows(1, 1).Address ' 実行時エラー: Rowsは行単位の範囲を返し、行内の特定のセルは指定できません。
Debug.Print Columns.Address ' 全列のアドレスを表示します(例: "$1:$1048576")。
Debug.Print Columns.CountLarge ' 全列の数を表示します(例: 16384)。
Debug.Print Columns(1).Address ' 最初の列のアドレスを表示します(例: "$A:$A")。
'Debug.Print Columns(1, 1).Address ' 実行時エラー: Columnsは列単位の範囲を返し、列内の特定のセルは指定できません。
End With
' Range オブジェクトにはタイプがあり、そのタイプは内部の要素をどのように持っているかによって
' 以下の3タイプに分かれます。
' ・個々のセルを表す Range オブジェクトを要素単位としている
' ・行を表す Range オブジェクトを要素単位としている
' ・列を表す Range オブジェクトを要素単位としている
End Sub詳細な説明
Sheet1.Cells(1, 2).Address- シート
Sheet1のセル(1, 2)のアドレスを取得します。これはセルB1を指します。
- シート
Sheet1.Cells.[_Default](1, 2).Address_Defaultプロパティを明示的に使用して同じセルのアドレスを取得します。結果は上記と同じです。
With Sheet1Sheet1内で一連の操作を行うブロックを開始します。
CellsCells.Addressはシート全体のアドレスを返します(例:$1:$1048576)。Cells.CountLargeはシート全体のセル数を返します(例: 17179869184)。Cells(1).Addressは最初のセルのアドレスを返します(例:$A$1)。Cells(1, 1).Addressはセル(1, 1)のアドレスを返します(例:$A$1)。
RowsRows.Addressはシート全体の行のアドレスを返します(例:$1:$1048576)。Rows.CountLargeはシート全体の行数を返します(例: 1048576)。Rows(1).Addressは最初の行のアドレスを返します(例:$1:$1)。Rows(1, 1).Addressは指定できず、実行時エラーとなります。
ColumnsColumns.Addressはシート全体の列のアドレスを返します(例:$1:$1048576)。Columns.CountLargeはシート全体の列数を返します(例: 16384)。Columns(1).Addressは最初の列のアドレスを返します(例:$A:$A)。Columns(1, 1).Addressは指定できず、実行時エラーとなります。
コメントの詳細
RangeオブジェクトのタイプRangeオブジェクトは、以下の3つのタイプに分かれます。- 個々のセルを表す
Rangeオブジェクト。 - 行を表す
Rangeオブジェクト。 - 列を表す
Rangeオブジェクト。
- 個々のセルを表す
- この違いにより、特定の操作が可能であったり、実行時エラーが発生したりします。


