假设我有一个TextRange对象,我需要找到包含该TextRange的Shape。
通常,我可以使用TextRange的TextRange属性来获取包含它的TextFrame,然后再次使用Parent属性来获取Shape。
但是,如果文本位于表单元格内,则TextRange的Parent属性为Nothing。(我认为这是PowerPoint 2010的“特色”)。编辑:除了通过Selection.TextRange访问TextRange时,这不是真的。
还有其他方法可以识别形状(在本例中是表格单元格)吗?
UPDATE:多亏了KazJaw,我又看了一遍,结果发现我可以在Parent链上导航,除非我从Selection.TextRange开始的TextRange是从Selection.TextRange那里获得的。就我而言,这不是什么问题。
发布于 2013-05-01 10:40:10
根据下面问题评论中的进一步讨论,真正的问题似乎是指选择对象。如果在表中选择任何文本,那么立即进行的一些测试将得到以下结果:
? 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-01 14:56:54
这并不是说你不能通过选择到达那里,这有时是你选择的问题。对象模型在表格单元格中的文本被破坏。如前所述,对于选定的表格单元格文本,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 Subhttps://stackoverflow.com/questions/16304149
复制相似问题