VBA オブジェクト

オブジェクト

VBA(Visual Basic for Applications)では、「オブジェクト」はプログラミングの中核をなす概念であり、Excel や Word などのアプリケーションを操作する際に必須の要素です。VBAで扱うオブジェクトには多くの種類があり、それぞれが特定の役割と機能を持っています。

以下では、VBAにおけるオブジェクトの基本から、Excelでよく使われる代表的なオブジェクトの種類、階層構造、使い方、プロパティ・メソッドの違い、そしてカスタムオブジェクトについて説明します。


■ 1. オブジェクトとは?

オブジェクトとは、「プロパティ(属性)」と「メソッド(動作)」を持つ実体であり、VBAではExcelのセル、ワークシート、ブック、ファイルシステム、フォームなど、操作対象のすべてがオブジェクトとして表現されます。


■ 2. 主なVBAオブジェクトの種類(Excel編)

VBAでよく使われるExcelオブジェクトを以下にまとめます:

オブジェクト名説明
ApplicationExcel全体のアプリケーションオブジェクト。全体設定や状態管理に使う。
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

■ まとめ:代表的なオブジェクト一覧

オブジェクト主な用途
ApplicationExcel全体の操作
Workbookブックファイル操作
Worksheetシート操作
Rangeセル・範囲操作
ChartObjectグラフの操作
Shape図形や画像操作
UserForm / ControlsGUIとユーザー入力
FileSystemObject外部ファイル・フォルダ操作
Dictionaryキーと値のデータ構造(参照型)

◆ 補足:オブジェクトは「Set」で代入

Dim rng As Range
Set rng = Range("A1")

オブジェクト型の変数には Set を使って代入します(VBAの仕様)。

タイトルとURLをコピーしました