Powerpoint VBA表&对象对齐

时间:2013-03-26 13:47:14

标签: vba powerpoint powerpoint-vba

我有一个宏,它生成一个包含3列和动态行数的表。 第3列标记为“趋势”,宏创建向上,向下或向左的箭头,但这些箭头不与表格分组。

在第三列中,宏在表格单元格中垂直和水平居中插入“ - ”,这样我就知道了中心,我必须在宏运行后重新对齐箭头。

是否有代码确定“ - ”的x,y坐标或确定行高度以使箭头居中在第3列的每个单元格中?行高是动态的,具体取决于同一行中其他单元格中包含的文本量。

3 个答案:

答案 0 :(得分:1)

由于您只使用“ - ”作为定位辅助工具,所以直接添加您想要的形状会不会更简单?

简单的例子,假设你在幻灯片1上选择了一个表:

Dim oSh As Shape
Dim oNewSh As Shape
Set oSh = ActiveWindow.Selection.ShapeRange(1).Table.Cell(1, 2).Shape
Set oNewSh = ActivePresentation.Slides(1).Shapes.AddShape(msoShapeSmileyFace, oSh.Left, oSh.Top, oSh.Width, oSh.Height)

这充满了笑容;相反,你想要使用oSh的坐标(它表示单元格的矩形形状),并做任何数学运算来使你的形状居中。​​

答案 1 :(得分:0)

假设幻灯片'one'上只有一个表格形状,2x2单元格尺寸,并且你的连字符在单元格(2,2)中,那么你必须添加两个参数:

Sub test()

Dim A, B
     A = ActivePresentation.Slides(1).Shapes(1).Table.Cell(2,2).Shape.TextFrame.TextRange.Lines(1).BoundTop
     B = ActivePresentation.Slides(1).Shapes(1).Top

Debug.Print A + B


ActivePresentation.Slides(1).Shapes.AddShape msoShapeRectangle, 100, A + B, 20, 20
End Sub

其中A + B约为。你在找什么。

答案 2 :(得分:0)

您可以简单地使用特殊字符,而不是使用“ - ”字符作为占位符,在其上放置Shape箭头。

假设tblCell已被标注为Shape并且已设置为特定单元格的.Shape,那么您可以执行以下操作:

tblCell.TextFrame.TextRange.Text = ChrW(&H25B2) 'Up arrow

或:

tblCell.TextFrame.TextRange.Text = ChrW(&H25BC) 'Down arrow

然后对齐它:

tblCell.TextFrame.TextRange.ParagraphFormat.Alignment = ppAlignCenter