我正在尝试检查用户选择的形状是否正确。为简单起见,假设我们在其他空白工作表中只有一个形状。因此,我们知道选择的形状必须是正确的:
Sub AreShapesTheSame()
Dim ws As Worksheet
Set ws = ActiveSheet
Dim shape As Object
Dim selShape As Object
Set shape = ws.Shapes.Item(1).DrawingObject
Set selShape = Selection
MsgBox shape Is selShape
End Sub
我可以在 Locals 窗口中看到,对象 shape 和 selShape 具有相同的属性。此外,如果我更改其中一个对象的名称(shape.name = "xxx"),另一个对象的名称也会更改。所以我假设它们是相同的对象,或者至少引用相同的对象。
如果是这样,为什么语句 (shape Is selShape) 返回 False?如何检查用户选择是否引用了某些特定对象?