VBAでもクラスは作成できます。
質問の例が、クラスのサンプルとして適切かどうかは別にして、そのままクラスにすると下記のようになります。
VBAウィンドウで、[挿入]-[クラスモジュール]をクリックします。
下記のコードを記述します。
vba
1Option Explicit
2
3Public Property Get A() As Integer
4 A = 50
5End Property
6
7Public Property Get B() As String
8 B = "りんご"
9End Property
10
11Public Property Get C() As Integer
12 C = 780
13End Property
コンパイル後、名前を clsData として保存します。
標準モジュールに下記のコードを記述します。
vba
1Public Sub clsDataTest()
2 Dim Data As New clsData
3
4 MsgBox Data.A
5 MsgBox Data.B
6 MsgBox Data.C
7
8End Sub
クラスでは値はプロパティで取得するといのが原則です。
プロパティが読み取り専用では、あまり使いみちがないので、もう少し有用なサンプルを。
上記の clsData のコードを下記に修正します。
vba
1Option Compare Database
2Option Explicit
3
4 Private pA As Integer
5 Private pB As String
6 Private pC As Integer
7
8Public Property Get A() As Integer
9 A = pA
10End Property
11
12Public Property Let A(ByVal vA As Variant)
13 pA = vA
14End Property
15
16Public Property Get B() As String
17 B = pB
18End Property
19
20Public Property Let B(ByVal vNewValue As Variant)
21 pB = vB
22End Property
23
24Public Property Get C() As Integer
25 C = pC
26End Property
27
28Public Property Let C(ByVal vNewValue As Variant)
29 pC = vC
30End Property
これで、プロパティの設定ができるようになります。
使用例としては、
標準モジュール
vba
1Public Sub clsDataTest()
2 Dim Data(1 To 3) As clsData
3 Dim i As Long, kei As Long
4
5
6 Set Data(1) = New clsData
7 With Data(1)
8 .A = 50
9 .B = "りんご"
10 .C = 780
11 End With
12
13 Set Data(2) = New clsData
14 With Data(2)
15 .A = 51
16 .B = "みかん"
17 .C = 600
18 End With
19
20 Set Data(3) = New clsData
21 With Data(3)
22 .A = 52
23 .B = "バナナ"
24 .C = 500
25 End With
26
27 For i = 1 To 3
28 kei = kei + Data(i).C
29 Next
30
31 MsgBox "合計は" & kei
32End Sub
このようにクラスモジュールは New で複数のインスタンスを生成できます。
ここまでなら、ユーザー定義型でもできますが、クラスだとさらにメソッドを持たせたり、いろいろ拡張性があります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/11/24 04:27
2015/11/24 05:40
2015/11/24 07:14