引数として定義したクラスを使用するカスタム ワークシート関数を作成したいと考えています。私は次のことをしようとしました:
Wrapper という名前のクラスを作成しました。
Private m_value As Integer
Public Property Get value() As Integer
value = m_value
End Property
Public Property Let value(value As Integer)
m_value = value
End Property
次に、2 つの関数を作成しました。
Function make_wrapper(value As Integer) As wrapper
Set make_wrapper = New wrapper
make_wrapper.value = value
End Function
Function square(wrapper As wrapper) As Integer
square = wrapper.value * wrapper.value
End Function
これらの関数を VBA から直接チェーンすると、すべてが期待どおりに機能します
Sub doit()
MsgBox (square(make_wrapper(7)))
End Sub
49 を表示します。
関数をExcelから直接呼び出そうとしても機能しません。セルに「=square(make_wrapper(7))」と入力すると、「#VALUE!」と表示されます。私は何を間違っていますか?これはまったく可能ですか?