INDEX
Propertyの概要
| プロパティ定義 VBAの予約語 | ||
|
Property 概要 Property は、VBAのクラスモジュールで変数(フィールド)の値を取得・設定するためのプロパティを定義するために使用されます。 わかりやすく説明 Property は、「クラスの変数を外部から安全に操作できるようにする仕組み」です。直接変数にアクセスせず、適切なチェックや処理を挟んで値をやり取りできます。 |
||
|
Property Get を使って値を取得する
Property Get を使って、クラス内の変数を外部から取得する基本的な例です。
' クラスモジュール (Class1)
Private pName As String ' プライベート変数
Public Property Get Name() As String
Name = pName
End Property
解説:
pNameはPrivateなので、クラス外から直接アクセスできない。Property Getを定義することで、外部から安全に値を取得できる。
Property Let を使って値を設定する
Property Let を使うと、クラス内の変数に値を代入できます。
' クラスモジュール (Class1)
Private pName As String ' プライベート変数
Public Property Get Name() As String
Name = pName
End Property
Public Property Let Name(value As String)
pName = value
End Property
解説:
Property Letを使って、外部から変数に値を代入できるようにする。- データのバリデーション(入力チェック)を追加することも可能。
Property Set を使ってオブジェクトを設定する
Property Set を使うと、クラスのプロパティにオブジェクトを代入できます。
' クラスモジュール (Class1)
Private pSheet As Worksheet ' ワークシートオブジェクト
Public Property Get Sheet() As Worksheet
Set Sheet = pSheet
End Property
Public Property Set Sheet(ws As Worksheet)
Set pSheet = ws
End Property
解説:
- オブジェクトを代入する場合は
Property Setを使用。 Setを使ってオブジェクトを適切に参照する。
ExcelでのPropertyの活用例(クラスを使ってセルを管理)
クラスを使って Excel のセルを簡単に管理する例です。
' クラスモジュール (CellManager)
Private pCell As Range
Public Property Get Cell() As Range
Set Cell = pCell
End Property
Public Property Set Cell(rng As Range)
Set pCell = rng
End Property
Public Property Get Value() As Variant
Value = pCell.Value
End Property
Public Property Let Value(val As Variant)
pCell.Value = val
End Property
解説:
- セルの範囲をオブジェクトとして管理。
- セルの値を簡単に取得・設定できる。
エラーを回避する方法
Property を使う際に、適切なエラーハンドリングを追加すると安全に使用できます。
' クラスモジュール (Class1)
Private pNumber As Integer
Public Property Get Number() As Integer
Number = pNumber
End Property
Public Property Let Number(value As Integer)
If value < 0 Then
Err.Raise 9999, "Class1", "負の値は設定できません"
Else
pNumber = value
End If
End Property
解説:
Err.Raiseを使って不正な値の設定を防ぐ。- 入力チェックを追加して、バグを未然に防ぐ。
Propertyの注意事項
- Property Let は数値や文字列用、Property Set はオブジェクト用: データ型に応じて適切なプロパティを選ぶ。
- クラスモジュール内でのみ使用可能: 標準モジュールでは
Propertyは使えない。 - 適切なデータチェックを行う: バリデーションを加えることで、意図しないデータの設定を防げる。
よくある質問
- Q: Property Let と Property Set の違いは?
- A:
Property Letは数値や文字列などの値型を代入し、Property Setはオブジェクトを代入するときに使います。 - Q: Property はどのような場面で使いますか?
- A: クラスモジュール内で変数の値を適切に管理し、外部から安全にアクセスさせたい場合に使います。
- Q: 標準モジュールで Property を使えますか?
- A: いいえ。Property はクラスモジュール内でのみ使用できます。
- Q: プロパティを読み取り専用にすることはできますか?
- A: はい。
Property Getだけを定義し、Property LetやProperty Setを省略すると、読み取り専用のプロパティを作成できます。
まとめ
- Property は、クラスモジュール内で変数の値を取得・設定するために使用する。
Property Getで値を取得し、Property Letで値を設定できる。- オブジェクトを設定する場合は
Property Setを使用する。 - データのバリデーションを追加すると、安全に管理できる。
- クラスを使って Excel のセルやデータを管理すると、可読性や保守性が向上する。