「Excel VBAのクラス」について第6回目です。クラスで使うProperty Getプロシージャについて勉強していきます。
前回 Propertyプロシージャの概要を確認できたので、
今回は Property Getプロシージャについて勉強しましょう (^^)
Get は「プロパティの値を返す」でしたね。
よろしくお願いしますm(_ _)m
はじめに
今回その中から「Property Getプロシージャ」を取り上げます。
3つの「Propertyプロシージャ」を再度確認しておきましょう。
プロシージャ | 説明 |
---|---|
Property Get | プロパティの値を返すプロシージャ |
Property Let | プロパティの値を設定するプロシージャ |
Property Set | オブジェクトに対する参照を設定するプロシージャ |
Property Getプロシージャ 単独の場合は、読み取り専用プロパティになります。
【この記事でわかることは】
・Property Get プロシージャの使い方
Property Getプロシージャとは
Property Getプロシージャは、オブジェクトのプロパティを取得して返すプロシージャです。
「取得する」というのは、クラスを利用する側(標準モジュールのプロシージャなど)から見ればProperty Getプロシージャの値を取得するということとも言えます。
Property Getステートメントの構文
Property Getプロシージャは、Property Getステートメントで始まり、Property Endステートメントまでの間で構成されます。
Property Getステートメントの構文は次のとおりです。
構文
[Public|Private|Friend][Static] Property Get name ([arglist]) [As type]
※ []で囲んだものは省略可能です。[Public|Private|Friend]が省略された場合、Publicが既定です。
解説
指定項目 | 説明 |
---|---|
[Public] | すべてのモジュールのすべてのプロシージャから参照できます。 |
[Private] | 宣言したモジュール内でのみ参照できます。 |
[Friend] | クラスモジュールでのみ使用でき、プロジェクト全体から参照できます。 ただし、インスタンスのコントロールからは参照できません。 |
[Static] | Property Getプロシージャ内のローカル変数が保持されます。 |
name | Property Getプロシージャの名前(プロパティ名)を指定します。 |
[arglist] | 宣言したプロパティを呼び出すときの引数を指定します。 |
[As type] | Property Getプロシージャが返す値のデータ型を指定します。 |
arglist 引数の構文と指定項目
arglist の構文
[Optional] [ByVal|ByRef] [ParamArray] varname [( )] [As type] [=defaultvalue]
※ []で囲んだものは省略可能です。
arglist の指定項目
パーツ | 説明 |
---|---|
[Optional] | 引数が必須でないことを示します。 |
[ByVal] | 値渡しで引数が渡されることを示します。 |
[ByRef] | 参照渡しで引数が渡されることを示します。既定は ByRef です。 |
[ParamArray] | 最後の引数としてのみ使用できます。 Variant 要素の省略可能(Optional)な配列であることを示します。 ParamArrayキーワードを使用すると、任意の数の引数を指定できます。 ByVal、ByRef、または Optional と併用することはできません。 |
varname | 引数を表す変数の名前です。 |
[As type] | プロシージャに渡す引数のデータ型です。 |
[defaultvalue] | 任意の定数または定数式です。 Optional のパラメーターにのみ有効です。 Object 型の場合、明示的な既定値は Nothing のみ有効です。 |
Property Getプロシージャの使用例
VBAのクラスモジュールでProperty Getプロシージャを使うと、オブジェクトのプロパティを取得することができます。
設定方法は、Property Get プロシージャ名() As 型名 のように入力します。Functionプロシージャと同じように、プロシージャ名に戻り値が取得されます。
次のコードは、クラスモジュールでProperty Getプロシージャを使った簡単な例です。
Public Name As String
Public Age As Integer
Public Kind As String
'情報を取得して「Info」にまとめる
Property Get Info() As String
Info = Name & "(" & Age & "歳)" & Kind
End Property
標準モジュールのコードがこちらです。
Sub GetTest()
Dim Pet As Class1 'Class1がクラスモジュール名
Set Pet = New Class1 'Class1クラスをインスタンス化
Pet.Name = "くるみ"
Pet.Kind = "犬"
Pet.Age = 12
MsgBox Pet.Info 'メッセージボックスに情報を表示する
End Sub
【クラスモジュールのコード解説】
・1~3行目、Public変数でプロパティを設定しています
・5~7行目、Property Getプロシージャ設定
・6行目、プロシージャ名に戻り値を(各プロパティの値を整形して)代入してします。
【標準モジュールのコード解説】
・2~3行目で変数「Pet」にクラスをインスタンス化しています。
次のように1行で書くこともできます。
Dim Pet As New Class1 ‘インスタンス化を1行で書く
・4~6行目は、各プロパティに値を設定しています。
・7行目で、Property Get Info() からの戻り値をメッセージボックスで表示しています。
【実行結果】
オブジェクトブラウザーで確認
オブジェクトブラウザーを開いて確認してみます。
プロシージャ名の「Info」が「読み取り専用」のプロパティとして設定されていることが確認できます。
コードでは先頭に「Public」を付けていませんがパブリック(既定)になっていることも確認できます。
まとめ(おわりに)
以上、Excel VBAでクラスで Property Getプロシージャを使う方法でした。
クラスの6回目でした。
クラスで使うProperty Getプロシージャについては理解できましたか?
簡単な使用例ですが覚えておいてくださいね(^^)
Property Getプロシージャ単独で使う方法はわかりました。
クラスはまだまだ奥が深そうですね(^^;)
次回はProperty Letプロシージャについて勉強しましょう(^^)/
今回のProperty Getと組み合わせて使うので復習しておいてね。
わかりました。次回もよろしくお願いしますm(_ _)m
まとめと感想など
以上、Property Getプロシージャの使い方で覚えておいてほしい大事なことはこちらです。
クラスについて学ぶことはまだまだたくさんあります。次回「Property Letプロシージャ」の解説も是非ご覧ください。
Excel VBA クラスについての記事一覧
★★★ ランキング参加中! クリックしてね(^^)/ ★★★
過去記事のサンプルファイルをダウンロードできます
この記事のサンプル登録はありません。記事内のコードをご利用ください。
過去の記事で使用したサンプルファイルがダウンロードできるページを設置しています
こちら(このリンク先)からご利用ください