powerpointvba表格&;对象对齐

powerpointvba表格&;对象对齐,vba,powerpoint,Vba,Powerpoint,我有一个宏,它生成一个包含3列和动态行数的表。 第三列标记为“趋势”,宏会创建一个向上、向下或向左的箭头,但这些箭头未与表格分组 在第三列中,宏在表格单元格中垂直和水平居中插入“-”,这样我就知道了中心,宏运行后,我必须重新对齐箭头 是否有代码确定“-”的x、y坐标,或确定第3列中每个单元格中箭头的居中位置的行高度??行高是动态的,取决于同一行中其他单元格中包含的文本量。假设幻灯片“一”上只有一个表格形状,单元格尺寸为2x2,并且连字符位于单元格(2,2)中,则必须添加两个参数: Sub tes

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

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


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

假设幻灯片“一”上只有一个表格形状,单元格尺寸为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大约是您要查找的形状。

因为您只使用“-”作为定位辅助,直接添加所需的形状不是更简单吗

简单示例,假设您在幻灯片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的坐标(表示单元格的矩形),并进行所需的数学运算以使形状居中。

不使用“-”字符作为占位符,在占位符上放置
形状
箭头,只需使用特殊字符即可

假设
tblCell
已标注为形状,并已设置为特定单元格的
.Shape
,则可以执行以下操作:

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

然后将其对齐:

tblCell.TextFrame.TextRange.ParagraphFormat.Alignment = ppAlignCenter

我需要对齐(x,3)中创建的箭头形状。箭头根据趋势而不同,行的大小根据文本的数量而不同。将一个形状对象放在桌子单元的中心,这样,答案中就有了模板,你只需要根据自己的情况进行调整。对于水平对齐,请使用
BoundLeft
属性。此外,如果需要,您可以使用单元格形状的标准
宽度
高度
。选择案例变量(k,vRiskTrend)案例趋势变化,趋势增加,趋势减少调用AddRiskTrendArrow(CInt(Var(k,vRiskTrend)),BlackRGB,“,TrendXBase,TrendYBase+TrendYAdj+((jj-1)*TrendYTableIncrement),15)箭头方向由调用的案例决定。
tblCell.TextFrame.TextRange.ParagraphFormat.Alignment = ppAlignCenter