【问题标题】:Powerpoint VBA table & object alignmentPowerpoint VBA 表格和对象对齐
【发布时间】:2015-05-12 05:43:29
【问题描述】:

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

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

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

【问题讨论】:

    标签: vba powerpoint


    【解决方案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 的坐标(代表单元格的矩形形状)并进行任何必要的数学运算以使您的形状在其中居中。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我需要对齐在 (x,3) 中创建的箭头形状。箭头因趋势而异,行的大小因文本量而异。在表格单元格中居中形状对象
      • 所以,你已经得到了答案中的模板,你只需要根据你的情况进行调整。对于水平对齐,请使用 BoundLeft 属性。此外,如果需要,您可以使用单元格形状的标准 widthheight
      • Select Case Var(k, vRiskTrend) Case Trend_NoChange, Trend_Increasing, Trend_Decreasing 调用 AddRiskTrendArrow(CInt(Var(k, vRiskTrend)), BlackRGB, "", _ TrendXBase, TrendYBase + TrendYAdj + ((jj - 1) * TrendYTableIncrement), 15)
      • 箭头方向由调用的案例决定。
      【解决方案3】:

      您可以简单地使用特殊字符,而不是使用“-”字符作为占位符,在其上放置 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-25
        • 2012-07-17
        • 1970-01-01
        • 2017-08-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-18
        相关资源
        最近更新 更多