セルのEndプロパティで終端セルの取得

基点となるセルから値や数式の入力されたセルの終端を取得するには End プロパティを使用します。引数には終端を調べる方向を指定します。Endプロパティを使用すると終端のセルオブジェクトが返却されます。

スポンサーリンク

Endプロパティの使用方法

構文
object.End( [Direction] )

※objectはセルまたはレンジオブジェクトを表す変数

引数名 省略 定数 説明
Direction × xlDown 下方向のセル終端を取得する
xlToLeft 左方向のセル終端を取得する
xlToRight 右方向のセル終端を取得する
xlUp 上方向のセル終端を取得する

Endプロパティ使用例

次のサンプルマクロは、基点セルB6から下方向の終端セルを取得する例です。

Sub sample6_43()
    With Range("B6")    '基点セル
        '基点セルと終端セルのアドレスを表示
        MsgBox "基点セル・・・" & .Address & vbLf & _
               "方向  ・・・xlDown" & vbLf & _
               "終端セル・・・" & .End(xlDown).Address
    End With
End Sub
sample6_43の実行前
sample6_43の実行前
sample6_43の実行結果
sample6_43の実行結果
Endプロパティの使用イメージ
Endプロパティの使用イメージ

途中にブランクセルを含む場合の終端セル取得

下表のような場合にB列の終端セルを取得する方法を考えます。

表の途中に空白セルを含む場合
表の途中に空白セルを含む場合

B3セルを基点に下方向へ終端セルを探すと、B5セルが返ってきてしまいます。

B3セルを基点に下方向へ終端セルを探す
B3セルを基点に下方向へ終端セルを探す
sample6_43の実行結果
sample6_43の実行結果

このような場合はB列の最終行から上方向へ終端セルを探します。最終行はRows.Countで取得しておくと、エクセルの最終行が増えた際にマクロを修正する必要がなくなります。

最終行を基点に上方向へ終端セルを探す
最終行を基点に上方向へ終端セルを探す
Sub sample6_44()
    With Range("B" & Rows.Count)    '基点セル
        '基点セルと終端セルのアドレスを表示
        MsgBox "基点セル・・・" & .Address & vbLf & _
               "方向  ・・・xlUp" & vbLf & _
               "終端セル・・・" & .End(xlUp).Address
    End With
End Sub
sample6_44の実行結果
sample6_44の実行結果

Endプロパティ使用時の注意点

オートフィルターにより非表示となっている行については、例え値が入力されていても End プロパティの探索対象外となります。この場合は非表示の行を表示させてからEndプロパティを使用する必要があります。

例として、以下のようにオートフィルタにより最終行が非表示となっているデータに対して、sample6_44 を実行してみます。

行が非表示になっている状態
行が非表示になっている状態

最終行が表示されていないため、終端セル(B13セル)が正しく取得できません。

sample6_44の実行結果
sample6_44の実行結果

この場合に終端セルを正しく取得するには、End プロパティ使用前に非表示行をすべて表示するようにします。

Sub sample6_45()
    With ActiveSheet
        'オートフィルターが設定されているかチェック
        If .AutoFilterMode Then
            '非表示行をすべて表示
            .AutoFilter.ShowAllData
        End If
    End With

    With Range("B" & Rows.Count)    '基点セル
        '基点セルと終端セルのアドレスを表示
        MsgBox "基点セル・・・" & .Address & vbLf & _
               "方向  ・・・xlUp" & vbLf & _
               "終端セル・・・" & .End(xlUp).Address
    End With
End Sub
sample6_41の実行結果
sample6_45の実行結果
タイトルとURLをコピーしました