0

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

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

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

4

3 回答 3

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 的坐标(它代表单元格的矩形形状),并执行所需的任何数学运算以使您的形状在其中居中。

于 2013-03-26T14:45:35.860 回答
0

假设幻灯片“一”上只有一个表格形状,其单元格尺寸为 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 约为。你在找什么。

于 2013-03-26T14:13:49.707 回答
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
于 2013-03-26T15:12:40.843 回答