授業の仕方を学びます。このようなことをする方法を教えてください。
そのクラスを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の場合は3Complexクラスでは、次の行:
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
関数。