Excel VBAの「プロパティ」と「メソッド」を初心者向けにやさしく説明
最初は少し硬い言葉に感じるけれど、ここをつかむとVBAが一気にわかりやすくなります。実際に動く例題を交えながら、噛み砕いて説明します。
基本の考え方
- オブジェクト:
説明: Excelの中にある「もの」のこと。例: ワークブック、シート、セル、フォントなど。 - プロパティ:
説明: オブジェクトが持つ「状態・見た目・設定」の情報。読み取りや変更ができる。 - メソッド:
説明: オブジェクトに「動作・処理」をさせる命令。実行すると何かが起きる。
たとえ話: 家(オブジェクト)に対して、壁の色(プロパティ)を青に変えるのは「状態の変更」。掃除する(メソッド)は「動作」を実行すること。
よく使うオブジェクトで理解する
- セル (Range オブジェクト):
プロパティ例: 値、文字色、フォントサイズ、背景色など
メソッド例: 削除する、コピーする、クリアする、選択する - ワークシート (Worksheet オブジェクト):
プロパティ例: 名前、可視/非表示
メソッド例: 追加する、削除する、移動する
例題1: セルの値を読み書きする(プロパティ)
- 目的: セルの値を読んで、別のセルに書き込む
- ポイント:
Valueは「値」というプロパティ
Sub Sample_ReadWrite()
' A1の値を読み取って、B1に書き込む
Dim v As Variant
v = Range("A1").Value ' ← 値を読む(プロパティを取得)
Range("B1").Value = v ' ← 値を書く(プロパティを設定)
End Sub
VB- 補足:
Valueは省略可能:Range("B1") = vでも同じ意味。
型の柔軟性:Variantは文字・数値どちらも入るので初心者向け。
例題2: セルの見た目を変える(プロパティ)
- 目的: セルA1の文字色を赤、背景を黄色、太字にする
- ポイント: 見た目は
FontやInteriorのプロパティ
Sub Sample_FormatCell()
With Range("A1")
.Font.Bold = True ' 太字
.Font.Color = RGB(255, 0, 0) ' 文字色を赤
.Interior.Color = RGB(255, 255, 0) ' 背景色を黄色
End With
End Sub
VB- 補足:
With構文: 同じセルに対する指定をまとめて書くと見やすい。
例題3: セルを削除する(メソッド)
- 目的: B2セルを削除し、左方向に詰める
- ポイント:
Deleteは「削除する」というメソッド。動作に引数を渡せる。
Sub Sample_DeleteCell()
Range("B2").Delete Shift:=xlShiftToLeft
End Sub
VB- 補足:
引数ありメソッド:Shift:=xlShiftUpにすれば上方向に詰める。
プロパティとの違い: プロパティは「状態の変更」、メソッドは「動作の実行」。
例題4: シートを追加・名前をつける(メソッド+プロパティ)
- 目的: 新しいシートを追加して、名前を「集計」に変更する
- ポイント: 追加はメソッド、名前変更はプロパティ
Sub Sample_AddSheet()
Dim ws As Worksheet
Set ws = Worksheets.Add ' ← 新規追加(メソッド)
ws.Name = "集計" ' ← 名前を設定(プロパティ)
End Sub
VB- 補足:
Setが必要: オブジェクト変数にはSetを使う。
つまずきポイントとコツ
- プロパティは「=」で読み書き、メソッドは「()」で実行:
例)Range("A1").Value = 10(プロパティ)/Range("A1").Clear(メソッド) - 引数つきメソッドは名前付き引数が安心:
例)Delete Shift:=xlShiftUpのように「何をどうするか」が読みやすい。 - オブジェクトごとに使えるものが違う:
RangeとWorksheetでは使えるプロパティ・メソッドが別。迷ったら対象が何かを意識。 - Withでまとまりを作る:
同じ対象に複数指定する場合はWith ... End Withでコードを短く。
練習課題
- 課題: A1〜A10の数値を合計して、B1に表示し、B1を太字・青文字にする
- ヒント:
WorksheetFunction.Sum(メソッド)、Value、Font.Bold、Font.Color
- ヒント:
Sub Practice_SumFormat()
Dim total As Double
total = WorksheetFunction.Sum(Range("A1:A10"))
Range("B1").Value = total
With Range("B1").Font
.Bold = True
.Color = RGB(0, 0, 255)
End With
End Sub
VB- 課題: C列の空白セルを削除して上に詰める
- ヒント:
SpecialCells(xlCellTypeBlanks)をDelete Shift:=xlShiftUpで処理
- ヒント:
Sub Practice_DeleteBlanks()
On Error Resume Next ' 空白がない時のエラー回避(簡易)
Columns("C").SpecialCells(xlCellTypeBlanks).Delete Shift:=xlShiftUp
On Error GoTo 0
End Sub
VBまとめの一言
- プロパティ: 見た目や値など「状態」を読んだり変えるもの
- メソッド: 追加・削除・クリアなど「動作」を実行するもの
- セットで考える: 「何に(オブジェクト)」「どうする(プロパティ/メソッド)」の二段構えで書くと迷わない
