在VB6中,我可以写这样的东西。
Private Sub MyMethod(ByVal someParameter Variant)
If IsObject(someVariable) Then
'do stuff
Else
'do something else
End If
End Sub
根据 现代VBA文档我意识到这些函数不一定与VB6的对应函数完全匹配,这个函数的行为如下。
返回一个布尔值,表示一个标识符是否代表一个对象变量。
文档中还提到。
IsObject仅在确定一个Variant是否为VarType vbObject时有用。如果Variant实际上引用了(或曾经引用过)一个对象,或者如果它包含了Nothing,那么就会出现这种情况。
如果我在 C# 中有一个等价的函数,它的参数类型是 dynamic
在VB6中,我可以写这样的东西:"IsObject "是什么?
在VBA中,最接近于 "对象 "的东西是一种引用类型。你可以使用以下方法。
这些方法结合在一起会帮助你迁移你的那段代码。但是,请注意,你需要对以下方法有深刻的理解 在C#中的类型 - 否则,你最终会有代码做 较少 或 更多 比你希望它做的更多。
就我个人而言,我在VB6上有几十年的经验,在C#上有十多年的经验,我会强烈地重新考虑我使用这些的理由。与VBA不同的是,你极少需要偏离强类型化的语法,也就是事先知道你的变量的至少基本属性的语法,比如它是引用还是值类型。