Private Function CreaterOpation(ByVal oper As String) As operation
Select Case oper
Case "+"
Dim operation1 As New OperationAdd
CreaterOpation = operation1
Case "-"
Dim operation2 As New OperationSub
CreaterOpation = operation2
Case "*"
Dim operation3 As New OperationMul
CreaterOpation = operation3
Case "/"
Dim operation4 As OperationDiv
CreaterOpation = operation4
End Select
End Function
CreaterOpation = operation1这一句是返回自定义数据类型但提示
对象变量或with块变未设置
Select Case oper
Case "+"
Dim operation1 As New OperationAdd
CreaterOpation = operation1
Case "-"
Dim operation2 As New OperationSub
CreaterOpation = operation2
Case "*"
Dim operation3 As New OperationMul
CreaterOpation = operation3
Case "/"
Dim operation4 As OperationDiv
CreaterOpation = operation4
End Select
End Function
CreaterOpation = operation1这一句是返回自定义数据类型但提示
对象变量或with块变未设置
SET CreaterOpation = operation1
如果这样会提示类型不匹配
或Private Function CreaterOpation(ByVal oper As String) As object
OperationAdd、OperationSub 怎样实现operation接口呢我作类模块写的operation代码
'保持属性值的局部变量
Private mvarNum1 As Double '局部复制
Private mvarNum2 As Double '局部复制
Public Function GetResult() As Double
End FunctionPublic Property Let Num2(ByVal vData As Double)
'向属性指派值时使用,位于赋值语句的左边。
'Syntax: X.Num2 = 5
mvarNum2 = vData
End Property
Public Property Get Num2() As Double
'检索属性值时使用,位于赋值语句的右边。
'Syntax: Debug.Print X.Num2
Num2 = mvarNum2
End PropertyPublic Property Let Num1(ByVal vData As Double)
'向属性指派值时使用,位于赋值语句的左边。
'Syntax: X.Num1 = 5
mvarNum1 = vData
End Property
Public Property Get Num1() As Double
'检索属性值时使用,位于赋值语句的右边。
'Syntax: Debug.Print X.Num1
Num1 = mvarNum1
End Property
用类模块写的operaionAdd
Implements operation
'保持属性值的局部变量
Private mvarNum1 As Double '局部复制
Private mvarNum2 As Double '局部复制
Public Function GetResult() As Double
Dim result As Double
result = mvarNum1 + mvarNum2
GetResult = result
End FunctionPublic Property Let Num2(ByVal vData As Double)
'向属性指派值时使用,位于赋值语句的左边。
'Syntax: X.Num2 = 5
mvarNum2 = vData
End Property
Public Property Get Num2() As Double
'检索属性值时使用,位于赋值语句的右边。
'Syntax: Debug.Print X.Num2
Num2 = mvarNum2
End PropertyPublic Property Let Num1(ByVal vData As Double)
'向属性指派值时使用,位于赋值语句的左边。
'Syntax: X.Num1 = 5
mvarNum1 = vData
End Property
Public Property Get Num1() As Double
'检索属性值时使用,位于赋值语句的右边。
'Syntax: Debug.Print X.Num1
Num1 = mvarNum1
End Property
但是提示说要类模块需要实现'GetResult'为接口的'operation'
'保持属性值的局部变量
Private mvarNum1 As Double '局部复制
Private mvarNum2 As Double '局部复制
Public Function operation_GetResult() As Double
Dim result As Double
result = mvarNum1 + mvarNum2
operation_GetResult = result
End FunctionPublic Property Let operation_Num2(ByVal vData As Double)
'向属性指派值时使用,位于赋值语句的左边。
'Syntax: X.Num2 = 5
mvarNum2 = vData
End Property
Public Property Get operation_Num2() As Double
'检索属性值时使用,位于赋值语句的右边。
'Syntax: Debug.Print X.Num2
Num2 = mvarNum2
End PropertyPublic Property Let operation_Num1(ByVal vData As Double)
'向属性指派值时使用,位于赋值语句的左边。
'Syntax: X.Num1 = 5
mvarNum1 = vData
End Property
Public Property Get operation_Num1() As Double
'检索属性值时使用,位于赋值语句的右边。
'Syntax: Debug.Print X.Num1
Num1 = mvarNum1
End Property