我发现从我的手工选择中获取名称属性时出现问题。
我使用非常简单的代码来获取选定的形状名称:
Selection.ShapeRange(i).Name
一切正常,我得到了自动形状、智能艺术、图表的名称。 当我只选择一个对象并且该对象是图表时,问题就会出现。我尝试执行我的代码(或尝试其他任何方法,例如一些简单的:顶部、左侧和其他方法),但收到这样的错误:
Run-time error "438":
Object doesn't support this propert or method
我不明白。单独选择图表时与与其他图表/形状一起选择时,图表的可能方法列表是否不同?
最佳答案
这就是你正在尝试的吗?
If TypeName(Selection) = "ChartArea" Then
Debug.Print ActiveChart.Parent.Name
Else
Debug.Print Selection.ShapeRange(1).Name
End If
我假设您运行此代码时选择了Shape
。
编辑
或者您可以使用Selection.Parent.Parent.Name
代替ActiveChart.Parent.Name
在学校学习几何时,我了解到正方形
可以是矩形
,但矩形
不能称为 >正方形
。两者都是几何形状,但它们具有不同的属性。类似地,矩形和图表都是形状,但它们不一定必须共享相同的属性。另一个例子是 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
关于vba - 选择 - ShapeRange 和图表问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21477566/