我有一个宏,它生成一个包含3列和动态行数的表。 第3列标记为“趋势”,宏创建向上,向下或向左指向的箭头,但这些箭头未与表分组。Powerpoint VBA表和对象对齐
在第三列中,宏在表格单元中垂直和水平居中插入“ - ”,这样我就知道中心了,我必须在宏运行后重新对齐箭头。
是否有代码来确定“ - ”的x,y坐标或确定将箭头与第3列中每个单元格中间的箭头对齐?行高度是动态的,取决于包含在同一行其他单元格中的文本数量。
我有一个宏,它生成一个包含3列和动态行数的表。 第3列标记为“趋势”,宏创建向上,向下或向左指向的箭头,但这些箭头未与表分组。Powerpoint VBA表和对象对齐
在第三列中,宏在表格单元中垂直和水平居中插入“ - ”,这样我就知道中心了,我必须在宏运行后重新对齐箭头。
是否有代码来确定“ - ”的x,y坐标或确定将箭头与第3列中每个单元格中间的箭头对齐?行高度是动态的,取决于包含在同一行其他单元格中的文本数量。
假设只有一个幻灯片“一” 2×2单元尺寸,表形和你的连字符是在细胞(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(它代表矩形的单元格形状)的坐标,并且可以做任何需要的数学运算来将它的形状居中。
而不是使用“ - ”字符作为占位符,在其上放置一个Shape
箭头,您可以简单地使用特殊字符。
假设tblCell
已尺寸的外形和已被设置为特定的细胞的.Shape
,那么你可以做:
tblCell.TextFrame.TextRange.Text = ChrW(&H25B2) 'Up arrow
或:
tblCell.TextFrame.TextRange.Text = ChrW(&H25BC) 'Down arrow
然后对准它:
tblCell.TextFrame.TextRange.ParagraphFormat.Alignment = ppAlignCenter
我需要对齐(x,3)中创建的箭头形状。根据趋势不同,行的大小会有所不同,具体取决于文本的数量。在表格单元格中居中放置一个形状对象 – user1821321 2013-03-26 14:36:40
因此,您已经在答案中找到了模板,您只需根据自己的情况进行调整即可。对于水平对齐使用'BoundLeft'属性。另外,如果需要,您可以使用标准的“宽度”和“高度”。 – 2013-03-26 14:40:38
Select Case Var(k,vRiskTrend)Case Trend_NoChange,Trend_Increasing,Trend_Decreasing Call AddRiskTrendArrow(CInt(Var,k,vRiskTrend)),BlackRGB,“”,_ TrendXBase,TrendYBase + TrendYAdj +((jj-1)* TrendYTableIncrement) 15) – user1821321 2013-03-26 15:19:39