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 Sheet1
Sheet1
内で一連の操作を行うブロックを開始します。
Cells
Cells.Address
はシート全体のアドレスを返します(例:$1:$1048576
)。Cells.CountLarge
はシート全体のセル数を返します(例: 17179869184)。Cells(1).Address
は最初のセルのアドレスを返します(例:$A$1
)。Cells(1, 1).Address
はセル(1, 1)
のアドレスを返します(例:$A$1
)。
Rows
Rows.Address
はシート全体の行のアドレスを返します(例:$1:$1048576
)。Rows.CountLarge
はシート全体の行数を返します(例: 1048576)。Rows(1).Address
は最初の行のアドレスを返します(例:$1:$1
)。Rows(1, 1).Address
は指定できず、実行時エラーとなります。
Columns
Columns.Address
はシート全体の列のアドレスを返します(例:$1:$1048576
)。Columns.CountLarge
はシート全体の列数を返します(例: 16384)。Columns(1).Address
は最初の列のアドレスを返します(例:$A:$A
)。Columns(1, 1).Address
は指定できず、実行時エラーとなります。
コメントの詳細
Range
オブジェクトのタイプRange
オブジェクトは、以下の3つのタイプに分かれます。- 個々のセルを表す
Range
オブジェクト。 - 行を表す
Range
オブジェクト。 - 列を表す
Range
オブジェクト。
- 個々のセルを表す
- この違いにより、特定の操作が可能であったり、実行時エラーが発生したりします。