select – ShapeRange和图表问题
我发现一个问题,从我的手工制作的select获取名称属性。
我使用非常简单的代码来获取选定的形状名称:
Selection.ShapeRange(i).Name
一切工作正常,我得到autoshapes,smartart,图表的名称。 当我只有一个对象被选中,对象是一个图表时,问题就出现了。 我尝试执行我的代码(或尝试任何其他方法,例如一些简单的:顶,左和其他方法),我得到这样的错误:
Run-time error "438": Object doesn't support this propert or method
我不明白 单独select图表的方法列表是否与用其他图表/形状select时不同?
这是你正在尝试?
If TypeName(Selection) = "ChartArea" Then Debug.Print ActiveChart.Parent.Name Else Debug.Print Selection.ShapeRange(1).Name End If
我假设当你运行这个代码时select了一个Shape
。
编辑
或者您可以使用Selection.Parent.Parent.Name
而不是ActiveChart.Parent.Name
在学校学习几何时,我了解到一个Square
可以是一个Rectangle
但是一个Rectangle
不能称为Square
。 两者都是几何形状,但他们有不同的属性。 同样,矩形和图表也是形状,但不一定要共享相同的属性。 另一个例子是Range
是一个Object
但也是一个Shape
。 但是,你不能以相同的比例衡量它们。 他们必须作为单独的对象来解决
上面的代码可以进一步缩小到
Select Case TypeName(Selection) Case "ChartArea": Debug.Print Selection.Parent.Parent.Name Case "Range": Debug.Print Selection.Address Case Else: Debug.Print Selection.ShapeRange(1).Name End Select