0

假设我有一个TextRange对象,我需要找到Shape包含那个TextRange.

通常,我可以使用 的Parent属性TextRange来获取TextFrame包含它的 ,然后Parent再次使用该属性来获取Shape.

但是,如果文本在表格单元格中,则 的Parent属性TextRangeNothing。(我认为这是 PowerPoint 2010 的“功能”)。 编辑:这不是真的,除非通过 Selection.TextRange 访问 TextRange。

有没有其他方法可以识别形状(在这种情况下是表格单元格)?

更新:感谢 KazJaw,我再次查看了这个,事实证明我可以在链上导航,Parent除非TextRange我开始的来源是从Selection.TextRange. 就我的目的而言,这不是问题。

4

2 回答 2

1

根据下面问题评论中的进一步讨论,似乎真正的问题是指选择对象。如果选择表中的任何文本,则立即进行的一些测试具有以下结果:

? Typename(ActiveWindow.Selection.TextRange)
TextRange
? Typename(ActiveWindow.Selection.TextRange.Parent)
Nothing
? Typename(ActiveWindow.Selection.TextRange.Parent.Parent)
'>>Error

其他程序员的附加信息。以下我发现做一些测试来回答这个问题有点令人困惑。(对于一张幻灯片、一张表格和一些填充文本的单元格的简单演示)

Sub Test_To_SO()
    Dim SL As Slide
    Set SL = ActivePresentation.Slides(1)

    Debug.Print TypeName(SL.Shapes(1).Table.Cell(1, 1).Shape.TextFrame.TextRange.Parent)
        'result >> TextFrame
    Debug.Print TypeName(SL.Shapes(1).Table.Cell(1, 1).Shape.TextFrame.TextRange.Parent.Parent)
        'result >> Shape
    Debug.Print TypeName(SL.Shapes(1).Table.Cell(1, 1).Shape.TextFrame.TextRange.Parent.Parent.Parent)
        'result >> Slide !!

End Sub
于 2013-05-01T10:40:10.633 回答
0

与其说您无法通过选择到达那里,不如说是您选择了什么。对象模型因表格单元格中的文本而损坏。如前所述,ActiveWindow.Selection.TextRange.Parent 不会为选定的表格单元格文本返回任何内容。

其他文字:

Sub GetParentShape()
    Dim oSh As Shape
    With ActiveWindow.Selection
        'Type might be None, Slides or one of the following:
        If .Type = ppSelectionShapes Then
            Set oSh = ActiveWindow.Selection.ShapeRange(1)
        End If
        If .Type = ppSelectionText Then
            Set oSh = ActiveWindow.Selection.TextRange.Parent.Parent
        End If

        Debug.Print oSh.Name

    End With
End Sub
于 2013-05-01T14:56:54.177 回答