我发现从手工选择中获取名称属性存在问题。
我使用非常简单的代码来获取选定的形状名称:
Selection.ShapeRange(i).Name
一切正常,我得到自动形状,智慧,图表的名称。 当我只选择了一个对象并且对象是图表时,问题就出现了。我尝试执行我的代码(或尝试任何其他方法,例如一些简单的:top,left和其他方法),我收到这样的错误:
Run-time error "438":
Object doesn't support this propert or method
我不明白。单独选择图表时的可能方法列表是否与使用其他图表/形状选择的方法不同?
答案 0 :(得分:6)
这是你在尝试的吗?
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
在学校,在学习几何学时,我了解到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