オブジェクトとプロシージャ

オブジェクト

VBA(Visual Basic for Applications)における「オブジェクト」と「プロシージャ(Sub / Function)」は、どちらもプログラムの構成要素ですが、役割や使われ方が根本的に異なります


🔷 1. 基本的な違い

項目オブジェクトプロシージャ
概要Excelなどの操作対象になる実体動作・処理のまとまり
機能状態(プロパティ)や操作(メソッド)を持つ一連の命令を実行する命令ブロック
使用方法Range("A1").Value = 100(状態や操作)Call SubName()=FunctionName()
主な用途対象(セル、シート、ファイルなど)を表す処理の自動化や計算など

🔷 2. オブジェクトとは?

● 定義

オブジェクトとは「属性(プロパティ)」と「機能(メソッド)」を持つ実体です。Excel の中では、ブック(Workbook)やシート(Worksheet)、セル(Range)などすべてがオブジェクトです。

● 例

Range("A1").Value = "Hello"
Range("A1").Interior.Color = RGB(255, 255, 0)

ここで Range("A1") がオブジェクト、
.Value.Interior.Color はプロパティ(属性)、
.ClearContents のようなものがメソッド(機能)です。


🔷 3. プロシージャとは?

● 定義

プロシージャとは、複数の命令をまとめた処理のかたまりです。SubプロシージャとFunctionプロシージャの2種類があります。

  • Subプロシージャ:実行はするが戻り値を返さない
  • Functionプロシージャ:実行結果(戻り値)を返す

● 例(Sub)

Sub GreetUser()
MsgBox "こんにちは"
End Sub

● 例(Function)

Function Add(x As Integer, y As Integer) As Integer
Add = x + y
End Function

🔷 4. オブジェクト vs プロシージャ:違いを具体的に

比較項目オブジェクトプロシージャ
存在の意味操作対象(データや構造)動作・処理の定義
Worksheets("Sheet1")Sub Hello() / Function Add()
振る舞い値を持ち、操作される実行され、命令を順に処理する
主な構成要素プロパティ、メソッド引数、ローカル変数、処理文
使用方法.プロパティ.メソッド()で使用Call ProcName() で呼び出す

🔷 5. 両者を組み合わせた例

Sub SetCellValue()
Dim rng As Range
Set rng = Worksheets("Sheet1").Range("A1") ' オブジェクト
rng.Value = "VBAで入力しました" ' オブジェクトのプロパティを操作
End Sub

このコードでは:

  • Worksheets("Sheet1").Range("A1") はオブジェクト
  • Value はそのプロパティ
  • SetCellValue はプロシージャ

🔷 6. クラスとカスタムオブジェクトの関係(上級)

VBAでは Class Module を使って、自分でオブジェクトを作成できます。これにより「プロシージャ(FunctionやSub)」をそのクラスの「メソッド」に含めて使うこともできます。

' Class1(クラスモジュール)内
Public Name As String
Public Sub SayHello()
MsgBox "こんにちは、" & Name
End Sub
' 標準モジュール
Dim user As New Class1
user.Name = "山田"
user.SayHello

ここでは user がオブジェクトで、SayHello はそのメソッド(プロシージャ)になります。


🔷 7. まとめ:どちらも重要!

ポイント解説
オブジェクトVBAの操作対象(セル、シート、ファイル、フォームなど)
プロシージャ一連の処理や計算を実行するコードのまとまり
関係性オブジェクトを使って、プロシージャ内で操作することが多い
VBAでの基本スタイルオブジェクト + プロシージャ の組み合わせ

✅ 補足:オブジェクトの中にもプロシージャ(メソッド)がある!

例えば、Range.ClearContents は「オブジェクトの中のプロシージャ的な機能」です。
これにより、オブジェクトとプロシージャは排他的なものではなく、連携して使われるという点も重要です。

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