我有这个功能:
Public Function nextBlock(featureBlockObj As FeatureBlock, endFeatureNumber As Variant) As FeatureBlock
Dim downstreamFeatureNumber As Variant
'get the feature number that this endpoint connects to
downstreamFeatureNumber = featureBlockObj.connectedFeatureNumber(endFeatureNumber)
'if it connects to a feature number, look that feature number up in blockDict
If isNumericNonBlank(downstreamFeatureNumber) Then
Set nextBlock = blockDict(downstreamFeatureNumber)
'if it does not connect, this is the last block in the sequence
Else
Set nextBlock = Nothing
End If
End Function
blockDict
是字典;FeatureBlock
是用户定义的类。
这一行:
Set nextBlock = blockDict(downstreamFeatureNumber)
抛出错误:
Object required.
我已经验证了以下内容:
downstreamFeatureNumber
作为blockDict
中的密钥存在blockDict(downstreamFeatureNumber)
是类型FeatureBlock
的对象
那么为什么我不能使用Set
将blockDict()
引用分配给nextBlock
呢?
显然,blockDict(downstreamFeatureNumber)
什么都不是,这是你的问题。在尝试分配给nextBlock
之前,您需要对其进行限定(如果它不应该发生,那么这是一个完全不同的问题 - 而不是 VBA 问题(。
If isNumericNonBlank(downstreamFeatureNumber) _
AND (Not (blockDict(downstreamFeatureNumber) Is Nothing)) Then