目標
ExcelVBAのEndプロパティを理解して操作できる
ExcelVBAではプロパティを知るとかなり多くの処理を自動で行わせることができます。加えて、VBAのプログラミング学習では変数や制御構造を学ぶ前にいろいろな設定を経験すると制御構造や様々なデータ構造の学習に入ったときに、オブジェクトやプロパティについて悩まなくてもよくなるので学習効率が良くなります。
ExcelVBAでよく使う「9つのプロパティ」
プロパティ(アルファベット順) |
ActiveSheet |
ActiveCell |
Cells |
End ※今回の記事で扱うプロパティです。 |
Offset |
Range |
Sheets |
Value |
Worksheets |
Endプロパティの概要と利用方法
Endプロパティとは
Endプロパティはエクセルのワークシート内でデータが入力されている表の末端(終端)のセルを取得します。組み込み定数によって右端、左端、上の端、下の端を取得することができます。
オブジェクト.End(方向を示す組み込み定数)
組み込み定数 | 記述例 | 移動の方向 | キーボードでの操作 |
xlUp | Range(“C6”).End(xlUp).Select | 上 | Ctrl + ↑ |
xlDown | Range(“C6”).End(xlDown).Select | 下 | Ctrl + ↓ |
xlToRight | Range(“C6”).End(xlToRight).Select | 右 | Ctrl + → |
xlToLeft | Range(“C6”).End(xlToLeft).Select | 左 | Ctrl + ← |
VBAの記述例として上下左右方向への動きをいずれも「セルC6」をアクティブセルとしてから移動させてみます。前回の「Ctrl+矢印キー」の移動と同様の動きを確認できます。
Sub practiceEnd()
Worksheets("Sheet4").Activate
Range("C6").Select
MsgBox "C6を選択しました"
Range("C6").End(xlUp).Select
MsgBox "上方向へ移動しました"
Range("C6").Select
MsgBox "C6を選択しました"
Range("C6").End(xlDown).Select
MsgBox "下方向へ移動しました"
Range("C6").Select
MsgBox "C6を選択しました"
Range("C6").End(xlToRight).Select
MsgBox "右方向へ移動しました"
Range("C6").Select
MsgBox "C6を選択しました"
Range("C6").End(xlToLeft).Select
MsgBox "左方向へ移動しました"
End Sub
操作後の動きを画面キャプチャで一枚ずつ見ていくと下のようになります。
![](https://howahowablog.com/wp-content/uploads/2022/08/ExcelVBA_34.png)
![](https://howahowablog.com/wp-content/uploads/2022/08/ExcelVBA_35.png)
![](https://howahowablog.com/wp-content/uploads/2022/08/ExcelVBA_34-1.png)
![](https://howahowablog.com/wp-content/uploads/2022/08/ExcelVBA_36.png)
![](https://howahowablog.com/wp-content/uploads/2022/08/ExcelVBA_34-2.png)
![](https://howahowablog.com/wp-content/uploads/2022/08/ExcelVBA_37.png)
![](https://howahowablog.com/wp-content/uploads/2022/08/ExcelVBA_34.png)
![](https://howahowablog.com/wp-content/uploads/2022/08/ExcelVBA_38.png)
記述例と動きについては以上です。
Endプロパティ使用時の注意点
Endプロパティの後は.Selectを(Selectメソッド)を付け忘れないようにします。※Selectメソッド以外にもオブジェクトが続くときがあります。
記述例:Range(“B3”).End(xlDown).Offset(1, 0).Select
意 味:セルB3から表の最下段へ移動してひとつ下の空白セルを選択する
組み込み定数 | 記述例 | 移動の方向 | キーボードでの操作 |
xlUp | Range(“C6”).End(xlUp).Select | 上 | Ctrl + ↑ |
xlDown | Range(“C6”).End(xlDown).Select | 下 | Ctrl + ↓ |
xlToRight | Range(“C6”).End(xlToRight).Select | 右 | Ctrl + → |
xlToLeft | Range(“C6”).End(xlToLeft).Select | 左 | Ctrl + ← |
Endプロパティのよく使うパターン
Endプロパティを利用するパターンとして「表の最下段へのセル移動」は頻度としても高いと思います。
ここでは「① 表の最下段へのセルの移動 」+「② ひとつ下の空白セルへの移動」+「③ 一件のレコード入力」を行ってみたいと思います。
サンプルプロシージャ
Sub AddRecord()
Dim LN As Integer
Worksheets("Sheet4").Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Select
LN = ActiveCell.Row
Cells(LN, 2).Value = "29"
Cells(LN, 3).Value = "電気代"
Cells(LN, 4).NumberFormatLocal = "\##,###"
Cells(LN, 4).Value = ""
Cells(LN, 5).NumberFormatLocal = "\##,###"
Cells(LN, 5).Value = "6237"
Cells(LN, 6).FormulaR1C1 = "=R[-1]C + RC[-2] - RC[-1]"
End Sub
プログラムの解釈
RowsやRow、Countについて補足的に説明をくわえると以下のようになります。
AddRecordという名前でプロシージャの宣言
Sub AddRecord()
LNをInteger型で宣言「LN = ActiveCell.Row」で利用する
Dim LN As Integer
WorkSheetのSheet4で
Cells(Rows.Count,2)を指定して
※ Cells(Rows.Count,2)のRows.Countはシートの一列に存在するセルの総数を数えています。現在のExcelでは1048576個なので、読み替えるとCells(1048576, 2) →「セルB1048576」を指定しています。
End(xlUp)で上方向の値のあるセルまで移動
→今回の実行時にはB11となります。
Offset(1,0).Selectでひとつだけセルを下へ移動
→今回の実行時にはB12となります。
以上を1行で書くと下のような記述になります。
Worksheets(“Sheet4”).Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Select
アクティブセルのRow(上から何番目のセルか)を数えてLNへ入力
→今回の場合は「LN=12」となります。
LN = ActiveCell.Row
Cells(LN, 2).Value = “29”
Cells(LN, 3).Value = “電気代”
Cells(LN, 4).NumberFormatLocal = “\##,###”
Cells(LN, 4).Value = “”
Cells(LN, 5).NumberFormatLocal = “\##,###”
Cells(LN, 5).Value = “6237”
Cells(LN, 6).FormulaR1C1 = “=R[-1]C + RC[-2] – RC[-1]”
End Sub
実行結果
![](https://howahowablog.com/wp-content/uploads/2022/08/ExcelVBA_39.png)
無事に表の最下段に新しいデータが入力されました。
今回は以上となります。
![](https://howahowablog.com/wp-content/uploads/2022/08/EXCEL-VBA-Endプロパティ1-320x180.jpg)
![](https://howahowablog.com/wp-content/uploads/2022/09/EXCEL-VBA-おすすめ書籍5選-320x180.jpg)
ブックマークのすすめ
「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。
![](https://howahowablog.com/wp-content/uploads/2022/04/Google-Chrome-:ブックマー-Microsoft-Edge:お気に入り-登録・削除方法-320x180.jpg)
![](https://howahowablog.com/wp-content/uploads/2022/12/パソコン選び-320x180.jpg)