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の仕様)。