如何在Powerpoint中显示/隐藏表中的数据?

时间:2016-10-10 06:07:41

标签: hide powerpoint show powerpoint-vba

我正在尝试使用多个带表的幻灯片,每个表有3列,最后一列是“参考值”,我希望它在演示期间隐藏,只显示按钮或超链接,每一行单独。我认为这是可能的,因为我真的很擅长编码而且我已经设法通过将单元格的文本格式从白色(表格的背景颜色)更改为红色来实现,但我只能一次为所有表格执行此操作,我需要每个人都有个人价值观。 (我希望我能说清楚)。这是我到目前为止所做的:

Sub format()

Dim s As Slide
Dim oSh As Shape
Dim oTbl As Table


For Each s In ActivePresentation.Slides

For Each oSh In s.Shapes
    If oSh.HasTable Then
        Set oTbl = oSh.Table

       With oTbl.Cell(2, 3).Shape.TextFrame.TextRange
                    .Text = "4500-9000"
                     .Font.Size = 12
                    .Font.Color = vbRed
                End With
    End If
Next
Next s
End Sub

但是这会改变我每张桌子上的同一个单元格,我希望它能够逐个更改特定表格中的特定单元格,因为它们都有不同的值。我知道我可以用动画做到这一点,但我宁愿这样做。

编辑:如果不是按下按钮,我可以通过将指针悬停在空单元格上来获取数据,并将光标悬停在单元格上时将其隐藏起来。

在任何情况下,每当我在幻灯片放映期间对演示文稿进行任何更改时,更改仍将在最后进行,这意味着它只会工作一次,然后我将不得不再次修复和隐藏所有值,是有没有办法在演示结束时恢复演示期间完成的更改?

2 个答案:

答案 0 :(得分:0)

你可以通过将引用传递给你想要处理的表格和单元格来调整你的sub并从另一个程序调用它:

Sub FormatTableCell(oTbl As Shape, lRow As Long, lCol As Long)

  With oTbl.Cell(lRow, lCol).Shape.TextFrame.TextRange
    .Text = "4500-9000"
    .Font.Size = 12
    .Font.Color = vbRed
  End With

End Sub

例如:

With ActivePresentation    
  FormatTableCell .Slides(1).Shapes("MyTable"), lRow:=1, lCol:=1
End With

关于悬停和悬停的触发器,这是PowerPoint的棘手问题。悬停在形状上时会有一个触发器来运行代码,但没有触发器悬停在形状之外。要实现后者,您可以在幻灯片的背面放置一个透明矩形,并通过将鼠标悬停在宏上来使用它来欺骗悬停触发器。编写代码并使用插入 / 操作 / 鼠标悬停功能,使用以下签名触发您的VBA程序:

Public Sub FormatThisTable(oTbl As Shape)

请注意,此方法仅传递形状(在您的情况下为表格),而不是鼠标悬停在其上的单元格。我可以看到你可以实现的唯一方法是使用许多非常复杂的Windows API来检测相对于表格屏幕坐标的鼠标光标位置。

替代方法可以是将表格取消组合为一组单独的形状,也可以使用上面的鼠标输入/输出技术为每个需要显示/隐藏和管理其可见性属性的单元格创建封面形状。

最后一点,您将需要使用需要在类模块中编写代码的应用程序级事件,这是一篇很好的文章,向您展示如何:

http://www.pptfaq.com/FAQ00004_Make_your_VBA_code_in_PowerPoint_respond_to_events.htm

答案 1 :(得分:0)

第1步 启动PowerPoint并打开包含要隐藏的行的PPTX文件。单击屏幕左侧“幻灯片”窗格中的相应幻灯片。 第2步 双击幻灯片上的电子表格,您可以对其进行编辑。选择要隐藏的行。单击“主页”选项卡,然后找到“单元格”部分。单击“格式”选项,该选项将显示可用功能的列表。 第3步 将指针放在“隐藏&取消隐藏“可见性”部分中的列表。单击“隐藏行”选项以隐藏选定的行。单击电子表格外部以返回PowerPoint幻灯片。