1
私は次のようにその値が、サーバ要求の結果に応じて、数またはオブジェクトインスタンスのいずれかである変数に値を代入しています:バリアントに関数値を割り当てる方法は、その関数がオブジェクトを返すことができる場合ですか?
Sub assignVar()
Dim v As Variant
v = getValue
End Sub
Function getValue() As Variant
Dim result As Boolean
result = PostSomethingToServer()
If result Then
getValue = 1
Else
Set getValue = New Dictionary
getValue.Add "a", 1
End If
End Function
IはassignVar(true)
を呼び出す場合、これは正常に動作し、私はその後、assignVar(false)
を呼び出す場合、私はエラーを取得:
Wrong number of arguments or invalid property assignment
getValue()
がオブジェクトを返す場合、それはset v = getValue
として割り当てる必要があるので、予想されるようになります。しかし、私がステートメントを使って整数を割り当てようとしているので、このように書くとType mismatch
というエラーが出ます。
戻り値がgetValue()
の場合、v
が正しく割り当てられるようにするにはどうすればよいですか?次のように
Option Explicit
Public value As Variant
Public valueIsObject As Boolean
Public Sub setup(value As Variant)
If IsObject(value) Then
Set Me.value = value
valueIsObject = True
Else
Me.value = value
valueIsObject = False
End If
End Sub
この方法で、私はテストメソッドを書き換えることができます:今、私はReturnValue
クラスを追加することによって、これを解決するためにしています