0
如何在VBA中转换为接口类型?在VBA中转换为接口类型
Public Function createArray(ParamArray args() As Variant) As IArray
Dim arr As IArray
Set arr = New cRwArray
Select Case UBound(args)
'No params
Case -1
'Create decorator for empty array (no action required)
'1 params
Case 0
'Return array with range values
If TypeName(args(0)) = "cRwRange" Then
'Cast type
Dim range As iRange
range = ctype(args(0), iRange) 'IRange variable not defined
Call arr.readFromRange(range)
End Select
Set createArray = arr
End Function
编辑:这很奇怪。
Sub test()
Dim arr As IArray
Dim range As iRange
Set range = createRange("Sheet1", 20, 30)
Set arr = createArray(range)
End Sub
但是,类型设置不正确。
我在工厂检查此:
Debug.Print TypeName(args(0)) 'cRwRange, not the interface type?
您不需要 - 只需使用Set来指定对象。 – Rory
@Rory似乎不幸的是,编译器抱怨'IRange'没有被识别为一个类型。它虽然存在,当将范围声明为IRange时没有抱怨。 – Trace
'Set range = args(0)'错误信息是什么? – Rory