ExcelVBAを学んでいると、「Range」「Workbook」「Sheet」などのオブジェクトとともに、
「Clear」「Copy」「Save」「Close」などのメソッド(Method)という言葉をよく耳にします。
しかし、「プロパティとどう違うの?」「メソッドって何をしているの?」と疑問に思う人も多いでしょう。
VBAで正しくメソッドを理解することは、マクロを“操作記録ツール”から“自在に動く自動化システム”へと進化させる第一歩です。
この記事では、VBAのメソッドの意味と使い方、プロパティとの違い、代表的なメソッド一覧と実務での応用例までを徹底的に解説します。
目次
- ✅ メソッドとは?VBAの動作命令の基本
- ・ メソッドの基本構文
- ・メソッド=「動詞」、プロパティ=「名詞」
- ✅ VBAでよく使う代表的なメソッド一覧(オブジェクト別)
- 【1】Range(セル)オブジェクトの代表的メソッド
- 【2】Worksheet(シート)オブジェクトの代表的メソッド
- 【3】Workbook(ブック)オブジェクトの代表的メソッド
- 【4】Application(Excel全体)オブジェクトの代表的メソッド
- ✅ メソッドを使う実践的な例
- ① セルの内容をクリアして書式を整える
- ② ブックを開いて保存・閉じる
- ③ 特定のシートをコピーして名前変更
- ④ 指定時間に自動処理を実行
- ✅ メソッドを理解するための3つの学習ポイント
- ① 「オブジェクト → メソッド」の構造で考える
- ② 引数(パラメータ)を使いこなす
- ③ マクロの記録でメソッドを観察する
- ✅ メソッドを使う上での注意点とトラブル対策
- ⚠ 1. オブジェクトが存在しないとエラーになる
- ⚠ 2. Excel全体に影響するメソッドは慎重に
- ⚠ 3. 繰り返し処理では画面更新を止める
- ✅ 実務でメソッドを使いこなすコツ
- ■ まとめ:メソッドを理解すればVBAが“使える”ようになる
✅ メソッドとは?VBAの動作命令の基本
VBAでは、Excelのセル・シート・ブックなどを「オブジェクト(Object)」として扱います。
そして、メソッドとはそのオブジェクトに何らかの動作をさせる命令のことです。
・ メソッドの基本構文
オブジェクト.メソッド [引数]
例:
Range("A1").Clear
このコードは、「A1セルをクリア(中身を削除)する」という命令です。
ここでの構成を分解すると次のようになります。
| 要素 | 意味 |
|---|---|
| Range("A1") | 対象(オブジェクト) |
| Clear | 実行する動作(メソッド) |
つまり、「Range」というオブジェクトに対して、「Clear」という動作を命じている、という構文になります。
・メソッド=「動詞」、プロパティ=「名詞」
メソッドを理解するコツは、「動詞」として捉えることです。
| 種類 | 内容 | 例 |
|---|---|---|
| プロパティ | オブジェクトの性質・状態を表す | Range("A1").Value = "売上" |
| メソッド | オブジェクトに動作をさせる命令 | Range("A1").Clear |
つまり、「プロパティ=情報(名詞)」「メソッド=動作(動詞)」と覚えると、感覚的に理解しやすくなります。
参考:【VBA】メソッド一覧と使い方|初心者でも理解できる動作命令の全知識
✅ VBAでよく使う代表的なメソッド一覧(オブジェクト別)
VBAのメソッドは非常に多く存在しますが、まずは主要オブジェクト別に覚えておくと実務で役立ちます。
【1】Range(セル)オブジェクトの代表的メソッド
セルや範囲に対して直接操作を行うメソッドです。
| メソッド名 | 動作内容 | 使用例 |
|---|---|---|
| Clear | 内容・書式をすべて削除 | Range("A1").Clear |
| ClearContents | 内容だけ削除(書式は残す) | Range("A1").ClearContents |
| Copy | コピーする | Range("A1").Copy Range("B1") |
| Delete | セルを削除 | Range("A1").Delete |
| Insert | セルを挿入 | Range("A1").Insert |
| Select | セルを選択 | Range("A1").Select |
| Sort | 並べ替えを実行 | Range("A1:C10").Sort Key1:=Range("A1") |
| Autofit | 列幅・行高を自動調整 | Columns("A").AutoFit |
| Find | 特定の値を検索 | Range("A1:A100").Find("合計") |
💡ポイント:
Rangeオブジェクトはメソッドが非常に豊富で、セル操作・書式設定・検索などのほとんどがここで完結します。
特にClearとClearContentsの違いは実務でよく使うため、混同しないよう注意しましょう。
参考:【VBA】Rangeオブジェクトを作成する方法|セル範囲を自在に操作する基礎と応用
【2】Worksheet(シート)オブジェクトの代表的メソッド
ワークシート単位で動作するメソッドです。
| メソッド名 | 動作内容 | 使用例 |
|---|---|---|
| Activate | シートをアクティブにする | Sheets("集計").Activate |
| Copy | シートをコピー | Sheets("集計").Copy After:=Sheets("分析") |
| Delete | シートを削除 | Sheets("Sheet3").Delete |
| Move | シートを移動 | Sheets("Sheet1").Move Before:=Sheets("Sheet2") |
| Calculate | 再計算を実行 | Sheets("集計").Calculate |
| Protect | シートを保護 | Sheets("集計").Protect Password:="1234" |
| Unprotect | シートの保護を解除 | Sheets("集計").Unprotect "1234" |
⚙ 実務例:
月報テンプレートを自動で複製する際には「Copy」メソッドを多用します。
また、ユーザー操作を防ぐためにProtectでシートを保護するのも定番です。
参考:【VBA】Protectメソッド:操作制限・保護・マクロ有効
【3】Workbook(ブック)オブジェクトの代表的メソッド
ファイル全体を操作するメソッドです。
| メソッド名 | 動作内容 | 使用例 |
|---|---|---|
| Open | ブックを開く | Workbooks.Open "C:\Data.xlsx" |
| Close | ブックを閉じる | ThisWorkbook.Close |
| Save | 保存 | ThisWorkbook.Save |
| SaveAs | 別名で保存 | ThisWorkbook.SaveAs "C:\Report.xlsx" |
| Activate | アクティブ化 | Workbooks("集計.xlsx").Activate |
| Add | 新しいブックを作成 | Workbooks.Add |
💡実務のポイント:
ブック単位の自動保存・バックアップ・一括処理に欠かせません。
特に「Open → Save → Close」の流れは複数ファイル処理で頻繁に登場します。
参考:【VBA】ファイルを選択して開く方法|Application.GetOpenFilenameとWorkbooks.Openの実践例
【4】Application(Excel全体)オブジェクトの代表的メソッド
Excelアプリ全体に関わる設定や動作を制御するメソッドです。
| メソッド名 | 動作内容 | 使用例 |
|---|---|---|
| Calculate | 全ての再計算を実行 | Application.Calculate |
| Wait | 指定時間まで待機 | Application.Wait Now + TimeValue("0:00:05") |
| OnTime | 指定時刻にマクロを実行 | Application.OnTime Now + TimeValue("0:01:00"), "MacroName" |
| Quit | Excelを終了 | Application.Quit |
| CutCopyMode | コピー状態を解除 | Application.CutCopyMode = False |
⚠ 注意点:
Application.QuitはExcelそのものを閉じる命令なので、
実行前に必ず保存処理を入れるようにしましょう。
参考:【VBA】処理が終わるまで待機させる【Sleep関数・Application.Waitメソッド】
✅ メソッドを使う実践的な例
次に、実際の業務で役立つメソッド活用例をいくつか紹介します。
これを理解すると、VBAで何ができるかがより明確になります。
① セルの内容をクリアして書式を整える
Sub ClearAndFormat()
With Range("A1:A10")
.ClearContents
.Interior.Color = vbYellow
.Font.Bold = True
End With
End Sub
ここでは、ClearContentsメソッドで内容を消し、
フォントや背景色を整える処理を組み合わせています。
メソッドとプロパティを連携させることで“動作+状態変更”を同時に実現しています。
参考:【VBA】セルをクリア(値を削除):ClearContentsメソッド
② ブックを開いて保存・閉じる
Sub OpenAndCloseBook()
Dim wb As Workbook
Set wb = Workbooks.Open("C:\Test\Report.xlsx")
wb.Save
wb.Close
End Sub
実務で頻繁に使う「Open → Save → Close」の典型パターンです。
複数ファイルを自動処理する際は、この構造をループ処理で使います。
参考:【VBA】ファイルを閉じる方法|保存あり・なしの使い分けと実務活用例
③ 特定のシートをコピーして名前変更
Sub CopySheet()
Sheets("Template").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = "Report_" & Format(Date, "yyyymm")
End Sub
CopyとNameを組み合わせることで、
毎月のレポートテンプレートを自動生成するマクロを作成できます。
ルーチン業務の大幅な効率化につながる実践例です。
参考:【Excel】シートをコピーして書式をそのまま保つ方法|罫線・背景色・列幅・印刷設定
④ 指定時間に自動処理を実行
Sub AutoRun()
Application.OnTime TimeValue("18:00:00"), "SendMail"
End Sub
このコードは、指定時刻に「SendMail」マクロを自動実行します。
OnTimeメソッドを使うと、定期処理や夜間バッチ実行なども可能です。
✅ メソッドを理解するための3つの学習ポイント
VBAのメソッドを体系的に覚えるには、以下の3ステップが効果的です。
① 「オブジェクト → メソッド」の構造で考える
すべてのメソッドは、何らかのオブジェクトに対して動作します。
したがって「どのオブジェクトに命令しているか」を意識することが重要です。
例:
| コード | 意味 |
|---|---|
Range("A1").Clear | セルA1をクリア |
Sheets("集計").Protect | 集計シートを保護 |
Workbooks.Open | ブックを開く |
“メソッドは単体で存在しない”という点を押さえておきましょう。
② 引数(パラメータ)を使いこなす
メソッドの中には、動作を指定するための引数を持つものがあります。
例:
Range("A1:A10").Sort Key1:=Range("A1"), Order1:=xlDescending
ここでは「並べ替えの基準(Key1)」や「昇順/降順(Order1)」を引数で指定しています。
引数を活用すれば、1つのメソッドで多彩な動作を制御できます。
③ マクロの記録でメソッドを観察する
Excelの「マクロの記録」機能を使えば、手動操作をVBAコードとして出力できます。
これを観察することで、どの操作がどのメソッドに対応しているかを学べます。
例:
セルをコピー → 貼り付けを記録すると、以下のようなコードが出力されます。
Range("A1").Select
Selection.Copy
Range("B1").Select
ActiveSheet.Paste
このように、日常操作をマクロ記録で観察することで、自然にメソッド名を覚えられます。
✅ メソッドを使う上での注意点とトラブル対策
メソッドは強力ですが、誤用するとエラーや意図しない動作を招くこともあります。
⚠ 1. オブジェクトが存在しないとエラーになる
例:
Sheets("Report").Delete
指定したシートが存在しないと「実行時エラー9(インデックスが有効範囲にありません)」が発生します。
安全のため、存在確認を入れてから実行するのが基本です。
If SheetExists("Report") Then Sheets("Report").Delete
⚠ 2. Excel全体に影響するメソッドは慎重に
Application.QuitやWorkbook.Closeなどは、他のブックまで閉じてしまう可能性があります。
実行前に保存処理や確認メッセージを入れましょう。
⚠ 3. 繰り返し処理では画面更新を止める
メソッドを大量に実行する場合は、処理速度が低下します。
以下を冒頭に入れると高速化できます。
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
処理後には必ず元に戻します。
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
✅ 実務でメソッドを使いこなすコツ
- 動詞として覚える:「Copy=コピー」「Protect=保護」「Delete=削除」
- 同じ処理をまとめる:「With」構文でコードを整理
- プロパティと組み合わせる:メソッドで動作、プロパティで状態を変更
- 失敗を恐れず試す:メソッドは実行結果がすぐ見えるので、試行学習が最適
■ まとめ:メソッドを理解すればVBAが“使える”ようになる
- メソッドとは、オブジェクトに動作を指示する命令(「動詞」)
- プロパティは「状態」、メソッドは「行動」
Range・Worksheet・Workbook・Applicationなど主要オブジェクトごとに整理して覚える- マクロ記録機能やIntelliSenseを活用して自然に学習できる
- 実務では「コピー」「削除」「保存」「保護」などが頻出
メソッドを正しく理解すると、VBAの世界が一気に広がります。
自分で処理を組み合わせ、業務全体を自動化するスクリプトを書けるようになることで、
「ただのマクロ記録者」から「実務エンジニア」へと進化できます。