选择 - ShapeRange和图表问题

时间:2014-01-31 10:20:20

标签: excel vba excel-vba

我发现从手工选择中获取名称属性存在问题。

我使用非常简单的代码来获取选定的形状名称:

Selection.ShapeRange(i).Name

一切正常,我得到自动形状,智慧,图表的名称。 当我只选择了一个对象并且对象是图表时,问题就出现了。我尝试执行我的代码(或尝试任何其他方法,例如一些简单的:top,left和其他方法),我收到这样的错误:

Run-time error "438":

Object doesn't support this propert or method

我不明白。单独选择图表时的可能方法列表是否与使用其他图表/形状选择的方法不同?

1 个答案:

答案 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。两者都是几何形状,但它们具有不同的属性。类似地,矩形形状和图表是形状,但它们必须共享相同的属性。另一个示例是RangeObject,但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