|
▼Yj さん:
おはようございます。
>> メンバ変数の型を String から Long に変更した場合を試してみたところ、「参照渡し」になっていました。
> これは勘違いです。Long 型に対しても「値渡し」になっていました。
ですよね?
私も以前これは、試してみたことがあったので・・・。
例えば、クラスモジュールClass1では
Public cvalue As Long
という変数宣言だけのクラスを定義して
標準モジュールにて、
'==================================================
Sub main()
Dim cls As New Class1
Call test(cls.cvalue)
MsgBox cls.cvalue
End Sub
'===================================================
Sub main1()
Dim myvalue As Long
Call test(myvalue)
MsgBox myvalue
End Sub
'====================================================
Sub test(tvalue As Integer)
tvalue = 100
End Sub
上記のmainは、取りあえず作動しますが、
main1は、型が一致しないというエラーが呼び出し(Call test(myvalue))
で発生します(これは、コンパイルエラーですね?)
つまり、クラスのプロパティの型までは、VBAはチェックしていません。
Vbaでは、オブジェクトは、クラスモジュールで作成しているオブジェクトのみしか
扱えないわけではありませんよね?
型のチェックをしていない(できない)プロパティに対して、
参照渡しでのパラメータを許すことは、Excelの立場になって考えると
大変だったのではないでしょうかねえ??
値渡しなら、安心だということだったのではないかと推測します。
|
|