如何在LibreOffice Impress中实现点击过的主题对象在整个演示过程中永久消失
Hey there, I totally get your frustration—having contestants pick already-used trivia topics over and over is such a waste of time! The exit animations didn't work because they reset when you navigate back to the first slide, so we need a way to permanently hide each topic once it's clicked. Here are your best options:
方案一:用LibreOffice Basic宏(最靠谱的方法)
This is the surest way to make topics stay hidden for the rest of your trivia night. Let's walk through setting it up:
- 打开宏编辑器:点击顶部菜单栏的「工具」>「宏」>「组织宏」>「LibreOffice Basic」。
- 新建一个宏模块:在弹出窗口中选择你的演示文稿,点击「新建」,给模块起个好记的名字(比如「TriviaHelper」),然后点击「确定」。
- 粘贴宏代码:在打开的编辑器中粘贴以下代码:
Sub HideClickedShape(oEvent As Object) Dim oShape As Object oShape = oEvent.Source oShape.Visible = False End Sub
这段代码会获取你点击的对象,并永久将其设置为隐藏状态(除非你后续手动编辑演示文稿恢复它)。
给每个主题绑定宏:
- 选中第一页上的一个主题对象(文本框、图片等)。
- 右键点击对象,选择「分配宏」。
- 找到你刚创建的「HideClickedShape」宏,选中它并点击「确定」。
- 对所有主题对象重复这个操作。
测试效果:启动幻灯片放映,点击一个主题——它会立刻消失。当你从问题幻灯片返回第一页时,这个主题依然保持隐藏状态,完全符合你的需求!
⚠️ 小提示:LibreOffice默认会禁用宏以保障安全,所以每次打开这个演示文稿时,你需要在弹出的安全提示中选择「启用宏」,否则隐藏功能不会生效。
方案二:切换到PowerPoint实现
如果你愿意切换到PowerPoint,实现逻辑类似,可能会更符合你对Office工具的使用习惯:
- 打开VBA编辑器:按下快捷键
Alt + F11打开VBA编辑器。 - 插入新模块:在左侧面板右键点击你的演示文稿,选择「插入」>「模块」,然后粘贴以下代码:
Sub HideSelectedShape() ActiveWindow.Selection.ShapeRange.Visible = msoFalse End Sub
- 绑定宏到主题对象:
- 选中一个主题对象,右键点击选择「分配宏」。
- 选中「HideSelectedShape」宏并点击「确定」,对所有主题重复此步骤。
和Impress一样,点击主题后它会永久隐藏,返回第一页也不会恢复。记得打开文件时允许启用宏哦!
有没有不用宏的办法?
很遗憾,没有。Impress和PowerPoint在返回之前的幻灯片时都会重置动画状态,所以退出动画无法实现永久隐藏的效果。宏是唯一能修改幻灯片对象本身属性,让主题一旦被点击就保持隐藏的可靠方法。
备注:内容来源于stack exchange,提问作者mhgx676

