and*_*ker 5 excel vba excel-vba
我发现从手工选择中获取名称属性有问题.
我使用非常简单的代码来获取选定的形状名称:
Selection.ShapeRange(i).Name
Run Code Online (Sandbox Code Playgroud)
一切正常,我得到自动形状,智能手机,图表的名称.当我只选择了一个对象并且对象是图表时,问题就出现了.我尝试执行我的代码(或尝试任何其他方法,例如一些简单的:顶部,左侧和其他方法),我收到这样的错误:
Run-time error "438":
Object doesn't support this propert or method
Run Code Online (Sandbox Code Playgroud)
我不明白.当单独选择图表时,可能的方法列表与使用其他图表/形状选择的方法不同吗?
这是你在尝试什么?
If TypeName(Selection) = "ChartArea" Then
Debug.Print ActiveChart.Parent.Name
Else
Debug.Print Selection.ShapeRange(1).Name
End If
Run Code Online (Sandbox Code Playgroud)
我假设Shape您运行此代码时选择了a .
编辑
或者你可以用Selection.Parent.Parent.Name而不是ActiveChart.Parent.Name
在学校里,在学习几何学的同时,我学到了一个Square可以是一个Rectangle但Rectangle不能称之为一个Square.两者都是几何形状,但它们具有不同的属性.类似地,矩形形状和图表是形状,而它是不必要的,他们将共享相同的属性.另一个例子是a Range是a Object但是a 是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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1198 次 |
| 最近记录: |