【作成中】【Excel VBA】列全体や行全体のセル範囲(Rangeオブジェクト)を取得する

目次

単一の列全体を取得する

Rangeプロパティで1列全体を取得する

Range("A:A")

次のコードはA列全体を赤色で塗りつぶします。

Sub sample()
    Dim entire As Range
    Set entire = ActiveSheet.Range("A:A")
    entire.Interior.Color = RGB(255, 0, 0)
End Sub

行番号や列番号を取得する

RangeオブジェクトのRowプロパティは、指定したRangeオブジェクトの最小の行番号、Columnプロパティは最小列番号をLong型の数値で返します。

Rangeオブジェクト.Row
Rangeオブジェクト.Column

それぞれ最小の行番号、列番号を返すので、次のコードはそれぞれ2と1を返します。つまり、セル範囲の左上セルの行番号、列番号を返します。

Range("A2:D5").Row           ' 2
Range("A2:D5").Column        ' 1

セル範囲の右下セルの行番号と列番号を取得する

セル範囲の右下のセルは、セル範囲のセルの数をCellsプロパティに指定することで取得できます。してがって次のコードはセル範囲の右下セル(D5)の行番号と列番号を表示します。

Sub sample()
    Dim aRange As Range, lastCell As Range
    Set aRange = Range("A2:D5")
    Set lastCell = aRange.Cells(aRange.Count)
    MsgBox lastCell.Row           ' 5
    MsgBox lastCell.Column        ' 4
End Sub

行または列を参照するには ― Rowsプロパティ

すべての行を取得する

WorksheetオブジェクトとRangeオブジェクのRowsプロパティは、指定したオブジェクトすべての行を表すRangeオブジェクトを返します。

Worksheetオブジェクト.Rows
Rangeオブジェクト.Rows

オブジェクトを省略するのは、ActiveSheet.Rowsの使用と同じです。

次の使用例はワークシート1のすべての行を削除します。この行のセル1の値は、前の行のセル1の値と同じです。

Sub sample()
    For Each rw In Worksheets(1).Rows
        this = rw.Cells(1, 1).Value
        If this = last Then rw.Delete
        last = this
    Next
End Sub

特定の行を取得する

Rowsプロパティに括弧で囲ってインデックス番号を指定すると、特定の行を取得することが出来ます。

はじめに1つの行を取得する方法から始めましょう。

WorkSheets("Sheet1").Rows(3).Delete

WorkSheetsオブジェクトを指定した場合は、インデックス番号は行番号と一致します。

連続した行を取得する場合は、A1表記のように文字列でインデックスの範囲をコロン(:)で区切って指定します。

よかったらシェアしてね!
  • URLをコピーしました!
目次