目標
ExcelVBAのDffsetプロパティを理解して操作できる
ExcelVBAではプロパティを知るとかなり多くの処理を自動で行わせることができます。加えて、VBAのプログラミング学習では変数や制御構造を学ぶ前にいろいろな設定を経験すると制御構造や様々なデータ構造の学習に入ったときに、オブジェクトやプロパティについて悩まなくてもよくなるので学習効率が良くなります。
ExcelVBAでよく使う「9つのプロパティ」
プロパティ(アルファベット順) |
ActiveSheet |
ActiveCell |
Cells |
End |
Offset ※今回の記事で扱うプロパティです。 |
Range |
Sheets |
Value |
Worksheets |
Offsetプロパティの概要と利用方法
Offsetプロパティとは
Offsetプロパティはエクセルシートの任意のセルから相対的なセルの位置を指定するためのプロパティです。
Offsetプロパティの利用方法
オブジェクト.Offset(縦方向の移動数,横方向の移動数)
Offsetは起点とするオブジェクトからの縦と横の移動数を指定することができます。起点をセルC3とした場合、下の表のようになります。
記述例
上に1つ、左に1つセルを移動する場合は「Range(“C3”).Offset(-1,-1).Select」
A | B | C | D | E | F | |
1 | ||||||
2 | Offset(-1,-1) | Offset(-1,0) | Offset(-1,1) | |||
3 | Offset(0,-1) | 起点 | Offset(0,1) | |||
4 | Offset(1,-1) | Offset(1,0) | Offset(1,1) | |||
5 |
Offsetプロパティの記述例
Offsetプロパティは色々な場面で使われます。Endプロパティの記事で紹介した「① 表の最下段へのセルの移動 」+「② ひとつ下の空白セルへの移動」+「③ 一件のレコード入力」でも利用しました。その他にもFor文と併せて使うこともあります。
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
For文と併せて書いた例(これまで使用してきた家計簿表で残高が30000を切ったらところの文字を赤にするプログラム)
Sub practiceOffset()
Worksheets("Sheet4").Select
Dim ln As Integer
Dim i As Integer
ln = WorksheetFunction.Count(Range(Cells(1, 6), Cells(Rows.Count, 6)))
ActiveSheet.Cells(Rows.Count, 6).End(xlUp).Select
For i = 1 To ln
If ActiveCell.Value <= 30000 Then
ActiveCell.Font.Color = vbRed
End If
ActiveCell.Offset(-1).Select
Next
End Sub
プログラムの解釈
RowsやRow、CountについてはEndプロパティ(2)の記事を参考にしてくだい。For文は繰り返しの文で、If文は条件分岐の文です。制御文についてはまた別の記事で。
繰り返し文(For~Next)の中で「ActiveCell.Offset(-1).Select」を記述しています。ここは1回の繰り返しが起こるごとにセルをひとつ上に移動させています。
For i = 1 To ln
If ActiveCell.Value <= 30000 Then
ActiveCell.Font.Color = vbRed
End If
ActiveCell.Offset(-1).Select
Next
実行結果
今回は以上となります。
ブックマークのすすめ
「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。