vba - 选择 - ShapeRange 和图表问题

标签 vba excel

我发现从我的手工选择中获取名称属性时出现问题。

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

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/

相关文章:

vba - IE.navigate2 因保护模式关闭而失败

vba - 如何将焦点设置在文本框上?

vba - 如何测试是否提供了 excel-VBA 过程的一些可选参数?

用于驱动器映射的 VBA SharePoint 身份验证

c# - OleDb 连接到 Excel;如何选择固定宽度,无限高度?

python - Unicode解码错误: 'ascii' codec can't decode byte 0xea in position 8: ordinal not in range(128)

vba - 将单元格范围(仅值而不是公式)复制到同一文件中的另一个工作表

excel - 如果我后来从其中任何一个中删除了任何超链接,为什么excel会删除所有粘贴的超链接?

vba - 用Excel提取数据

excel - 如何在excel中创建引用变量