VBA(Visual Basic for Applications)では、「オブジェクト」はプログラミングの中核をなす概念であり、Excel や Word などのアプリケーションを操作する際に必須の要素です。VBAで扱うオブジェクトには多くの種類があり、それぞれが特定の役割と機能を持っています。
以下では、VBAにおけるオブジェクトの基本から、Excelでよく使われる代表的なオブジェクトの種類、階層構造、使い方、プロパティ・メソッドの違い、そしてカスタムオブジェクトについて説明します。
■ 1. オブジェクトとは?
オブジェクトとは、「プロパティ(属性)」と「メソッド(動作)」を持つ実体であり、VBAではExcelのセル、ワークシート、ブック、ファイルシステム、フォームなど、操作対象のすべてがオブジェクトとして表現されます。
■ 2. 主なVBAオブジェクトの種類(Excel編)
VBAでよく使われるExcelオブジェクトを以下にまとめます:
| オブジェクト名 | 説明 |
|---|---|
| Application | Excel全体のアプリケーションオブジェクト。全体設定や状態管理に使う。 |
| Workbook | 開いているExcelファイルを表す。複数扱える。 |
| Worksheet | ブック内の各シート。セルを含む基本単位。 |
| Range | セルやセル範囲を表す。データの入力・取得・書式設定に使用。 |
| Cells | セル単位でのアクセス(行・列インデックス指定)。 |
| Rows / Columns | 行や列全体の範囲を表す。 |
| Chart / ChartObject | グラフを表すオブジェクト。 |
| Shape | 図形や画像など。 |
| Name | 名前定義(定数名や範囲名など)を管理。 |
| Range.Font / Interior | セルの書式や色などの設定に使用するプロパティオブジェクト。 |
■ 3. オブジェクトの階層構造
Excel VBAでは、オブジェクトが階層構造になっています。例:
scssコピーする編集するApplication
└─ Workbooks("Book1.xlsx")
└─ Worksheets("Sheet1")
└─ Range("A1")
この構造により、「ブック → シート → セル」という順にアクセスできます。
例:
Application.Workbooks("Book1.xlsx").Worksheets("Sheet1").Range("A1").Value = "Hello"
このように、ドット(.)でつなげてオブジェクトをたどります。
■ 4. Rangeオブジェクトの例(セル操作)
Sub セルに値を入力()
Dim rng As Range
Set rng = Worksheets("Sheet1").Range("A1")
rng.Value = "テスト"
rng.Font.Bold = True
rng.Interior.Color = RGB(255, 255, 0)
End Sub
ここでは Range オブジェクトのプロパティ(Value, Font, Interior)やメソッド(例:ClearContents など)を使っています。
■ 5. WorkbookとWorksheet
Dim wb As Workbook
Set wb = Workbooks("売上.xlsx")
Dim ws As Worksheet
Set ws = wb.Sheets("1月")
これにより、対象のブック・シートをオブジェクトとして変数に格納して、繰り返し処理などに使えます。
■ 6. Applicationオブジェクトの機能例
Application.DisplayAlerts = False ' メッセージの非表示
Application.ScreenUpdating = False ' 画面描画の停止
Applicationは、Excel全体の動作に関わる設定を管理するオブジェクトです。
■ 7. コントロールオブジェクト(UserForm関係)
ユーザーフォーム(UserForm)上にあるボタンやテキストボックスなどもオブジェクトです。
| オブジェクト名 | 説明 |
|---|---|
UserForm | フォーム本体 |
CommandButton | ボタン |
TextBox | 入力欄 |
Label | ラベル(表示専用) |
UserForm1.TextBox1.Text = "入力してください"
■ 8. FileSystemObject(外部ファイル操作)
Scripting.FileSystemObject を使うと、ファイルやフォルダの読み書きなどが可能になります。
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists("C:\test.txt") Then
MsgBox "ファイルが存在します"
End If
このように、外部APIオブジェクト(ActiveXオブジェクト)も扱えます。
■ 9. プロパティ・メソッドの違い
| 要素 | 説明 | 例 |
|---|---|---|
| プロパティ | 状態・属性 | Range("A1").Value |
| メソッド | 動作・処理 | Range("A1").ClearContents() |
■ 10. カスタムクラス(自作オブジェクト)
VBAでは Class Module を使って、独自のオブジェクトを作ることもできます。
' Class1 モジュール内
Public Name As String
Public Function SayHello()
MsgBox "こんにちは、" & Name & "さん"
End Function
' 通常モジュールから使う
Dim user As New Class1
user.Name = "山田"
user.SayHello
■ まとめ:代表的なオブジェクト一覧
| オブジェクト | 主な用途 |
|---|---|
| Application | Excel全体の操作 |
| Workbook | ブックファイル操作 |
| Worksheet | シート操作 |
| Range | セル・範囲操作 |
| ChartObject | グラフの操作 |
| Shape | 図形や画像操作 |
| UserForm / Controls | GUIとユーザー入力 |
| FileSystemObject | 外部ファイル・フォルダ操作 |
| Dictionary | キーと値のデータ構造(参照型) |
◆ 補足:オブジェクトは「Set」で代入
Dim rng As Range
Set rng = Range("A1")
オブジェクト型の変数には Set を使って代入します(VBAの仕様)。

