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

詳細な説明

  1. Sheet1.Cells(1, 2).Address
    • シート Sheet1 のセル (1, 2) のアドレスを取得します。これはセル B1 を指します。
  2. Sheet1.Cells.[_Default](1, 2).Address
    • _Default プロパティを明示的に使用して同じセルのアドレスを取得します。結果は上記と同じです。
  3. With Sheet1
    • Sheet1 内で一連の操作を行うブロックを開始します。
  4. Cells
    • Cells.Address はシート全体のアドレスを返します(例: $1:$1048576)。
    • Cells.CountLarge はシート全体のセル数を返します(例: 17179869184)。
    • Cells(1).Address は最初のセルのアドレスを返します(例: $A$1)。
    • Cells(1, 1).Address はセル (1, 1) のアドレスを返します(例: $A$1)。
  5. Rows
    • Rows.Address はシート全体の行のアドレスを返します(例: $1:$1048576)。
    • Rows.CountLarge はシート全体の行数を返します(例: 1048576)。
    • Rows(1).Address は最初の行のアドレスを返します(例: $1:$1)。
    • Rows(1, 1).Address は指定できず、実行時エラーとなります。
  6. Columns
    • Columns.Address はシート全体の列のアドレスを返します(例: $1:$1048576)。
    • Columns.CountLarge はシート全体の列数を返します(例: 16384)。
    • Columns(1).Address は最初の列のアドレスを返します(例: $A:$A)。
    • Columns(1, 1).Address は指定できず、実行時エラーとなります。

コメントの詳細

  • Range オブジェクトのタイプ
    • Range オブジェクトは、以下の3つのタイプに分かれます。
      • 個々のセルを表す Range オブジェクト。
      • 行を表す Range オブジェクト。
      • 列を表す Range オブジェクト。
    • この違いにより、特定の操作が可能であったり、実行時エラーが発生したりします。

Follow me!