我正在试着用几张带表格的幻灯片,每个表格有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
但这将改变我拥有的每个表上的相同单元格,我希望它逐个改变特定表中的特定单元格,因为它们都具有不同的值。我知道我可以用动画来做到这一点,但我更愿意这样做。
编辑:如果我可以通过将指针悬停在空单元格上来获取数据,并在将光标悬停在单元格上时将其隐藏起来,那就太好了,而不是按下按钮。
在任何情况下,当我在幻灯片放映期间对演示文稿进行任何更改时,更改都会在最后仍然存在,这意味着它只会起作用一次,然后我必须再次修复和隐藏所有值,有没有办法在演示结束时恢复演示文稿期间所做的更改?
发布于 2016-10-11 15:20:06
通过传递对要处理的表和单元格的引用,您可以添加您的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来检测鼠标光标相对于表格屏幕坐标的位置。
另一种方法可以是将表格解组为一组单独的形状,或者使用上面的鼠标输入/输出技术为需要显示/隐藏和管理其可见性属性的每个单元格创建封面形状。
对于最后一点,您将需要使用应用程序级事件,这需要类模块中的代码,这是一篇很好的文章,向您展示了如何:
http://www.pptfaq.com/FAQ00004_Make_your_VBA_code_in_PowerPoint_respond_to_events.htm
发布于 2016-10-18 02:49:01
步骤1启动PowerPoint并打开包含要隐藏的行的PPTX文件。在屏幕左侧的幻灯片窗格中单击相应的幻灯片。步骤2双击幻灯片上的电子表格,这将允许您对其进行编辑。选择要隐藏的行。单击“主页”选项卡,找到“单元”部分。单击“Format”选项,将显示可用功能列表。步骤3将指针放在“可见性”部分的“隐藏和取消隐藏”列表上。单击“隐藏行”选项以隐藏所选行。在电子表格外部单击以返回到PowerPoint幻灯片。
https://stackoverflow.com/questions/39952168
复制相似问题