基点となるセルから値や数式の入力されたセルの終端を取得するには End プロパティを使用します。引数には終端を調べる方向を指定します。Endプロパティを使用すると終端のセルオブジェクトが返却されます。
Endプロパティの使用方法
引数名 | 省略 | 定数 | 説明 |
---|---|---|---|
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
途中にブランクセルを含む場合の終端セル取得
下表のような場合にB列の終端セルを取得する方法を考えます。
B3セルを基点に下方向へ終端セルを探すと、B5セルが返ってきてしまいます。
このような場合はB列の最終行から上方向へ終端セルを探します。最終行はRows.Countで取得しておくと、エクセルの最終行が増えた際にマクロを修正する必要がなくなります。
Sub sample6_44()
With Range("B" & Rows.Count) '基点セル
'基点セルと終端セルのアドレスを表示
MsgBox "基点セル・・・" & .Address & vbLf & _
"方向 ・・・xlUp" & vbLf & _
"終端セル・・・" & .End(xlUp).Address
End With
End Sub
Endプロパティ使用時の注意点
オートフィルターにより非表示となっている行については、例え値が入力されていても End プロパティの探索対象外となります。この場合は非表示の行を表示させてからEndプロパティを使用する必要があります。
例として、以下のようにオートフィルタにより最終行が非表示となっているデータに対して、sample6_44 を実行してみます。
最終行が表示されていないため、終端セル(B13セル)が正しく取得できません。
この場合に終端セルを正しく取得するには、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