/ /クラスで作成された関数を使用-VBA-VBA、Excel-VBA、Excel

Class - VBA - vba、excel-vbaで作成された関数を使用する

授業の仕方を学びます。このようなことをする方法を教えてください。

そのクラスをExcelで準備しました:

クラス名「Complex」

Option Explicit

Public Re As Double   "Real
Public Im As Double "Imaginary

Public Function CCAdd(ParamArray Complex1() As Variant) as Complex
Dim i As Variant
Dim ZXC As Complex
Set ZXC = New Complex

For i = 0 To UBound(Complex1) "Numer of arguments passed to the function
If Not IsMissing(Complex1(i)) Then "Omit arguments which don"t exist
If TypeName(Complex1(i)) = "Complex" Then " Check is it Complex
ZXC.Re = Complex1(i).Re + ZXC.Re
ZXC.Im = Complex1(i).Im + ZXC.Im
End If
End If
Next i
Set Add = ZXC
Set ZXC = Nothing
End Function

私が置いたモジュール:

sub asd()
Dim K As Complex
Dim Z As Complex
Dim A As Complex

Set K = New Complex
Set Z = New Complex
Set A = New Complex

K.Re = 1
K.Im = 2

Z.Re = 3
Z.Im = 4

A = K.CCAdd(K, Z)
end sub

関数CCAddを実行した後、値を「A」に渡すとエラーが発生します。これをどのように解決しますか?たぶん関数は非標準型のデータを渡すことができません。

回答:

回答№1の場合は3

Complexクラスでは、次の行:

Set Add = ZXC

次のようにする必要があります。

Set CCAdd = ZXC

次に、モジュールで必要なものは次のとおりです。

Sub asd()
Dim K As Complex
Dim Z As Complex
Dim A As Complex

Set K = New Complex
Set Z = New Complex

K.Re = 1
K.Im = 2

Z.Re = 3
Z.Im = 4

Set A = K.CCAdd(K, Z)
End Sub

だから、使用する必要はありません Set A = New Complex しかし、使用する必要があります Set の結果に割り当てるとき CCAdd 関数。