比较VBA中COM对象的标识 在C++中,如果我想知道两个COM接口指针P1和P2是否指向同一个组件,我会这样做: bool IsSame( IDispatch* p1, IDispatch* p2 ) { IUnknown* pUnk1; p1->QueryInterface( IID_IUnknown, reinterpret_cast<void**>(&pUnk1) ); IUnknown* pUnk2; p2->QueryInterface( IID_IUnknown, reinterpret_cast<void**>(&pUnk2) ); return p1 == p2; }

比较VBA中COM对象的标识 在C++中,如果我想知道两个COM接口指针P1和P2是否指向同一个组件,我会这样做: bool IsSame( IDispatch* p1, IDispatch* p2 ) { IUnknown* pUnk1; p1->QueryInterface( IID_IUnknown, reinterpret_cast<void**>(&pUnk1) ); IUnknown* pUnk2; p2->QueryInterface( IID_IUnknown, reinterpret_cast<void**>(&pUnk2) ); return p1 == p2; },vba,com,identity,Vba,Com,Identity,有什么想法吗?您可以使用Is来比较两个对象: Private Function IsSame(p1 As msforms.ListBox, p2 As msforms.ListBox) IsSame = p1 Is p2 End Function 哎呀,我不小心投了反对票。我做了一个编辑,然后将其回滚,以便我可以向上投票。谢谢,还有一个注意事项:如果您想使用Select语句,请选择p1:Case Is p2。。。导致编译错误,而选择p1:Case p1是p2。。。表示将p1与真或假值进行比较,

有什么想法吗?

您可以使用
Is
来比较两个对象:

Private Function IsSame(p1 As msforms.ListBox, p2 As msforms.ListBox)
IsSame = p1 Is p2
End Function

哎呀,我不小心投了反对票。我做了一个编辑,然后将其回滚,以便我可以向上投票。谢谢,还有一个注意事项:如果您想使用Select语句,请选择p1:Case Is p2。。。导致编译错误,而选择p1:Case p1是p2。。。表示将p1与真或假值进行比较,因此正确的形式为Select True:情况p1为p2。。。
Private Function IsSame(p1 As msforms.ListBox, p2 As msforms.ListBox)
IsSame = p1 Is p2
End Function