【问题标题】:Powerpoint VBA setting ComandButton shape to HiddenPowerpoint VBA将命令按钮形状设置为隐藏
【发布时间】:2018-11-05 03:55:36
【问题描述】:

我有一个宏,可以搜索幻灯片中的所有形状并隐藏与某些名称匹配的形状。我的形状集合包括标准形状和命令按钮的混合。

命令按钮的“Visible”属性在属性窗口中设置为“False”,它们在 powerpoint 编辑屏幕中不可见,但在幻灯片放映视图中仍然可见。当我绕过形状变量 (sh.Visible) 并直接引用命令按钮 (startB.Visible) 时,不会发生此问题。见下文:

For Each sh In ActivePresentation.Slides(1).Shapes
    If sh.Name = "startB" Then
        sh.Visible = False
    End If
Next

【问题讨论】:

    标签: vba powerpoint shapes


    【解决方案1】:

    循环遍历形状时,需要根据对象检查表单控件名称。我添加了第一个 If 语句来检查形状的类型。然后,第二个 If 将访问 OLEFormat Object Name。

    If sh.Type = msoOLEControlObject Then
        If sh.OLEFormat.Object.Name = "startB" Then
            sh.Visible = False        
        End If
    End If
    

    【讨论】:

    • 这提供了相同的结果,因为属性菜单和编辑视图将按钮显示为隐藏(如果我退出幻灯片放映然后从同一张幻灯片恢复它,它也是隐藏的),但是它没有隐藏在幻灯片视图中
    • 如果将代码更改为sh.Visible = Not sh.Visible会发生什么
    【解决方案2】:

    我假设这是因为形状只是命令按钮的一个组件。作为一种解决方法,我得到了这个,尽管我对为什么会发生这种情况不是 100% 有信心:

    If sh.Name = "startB" Then
        sh.OLEFormat.Object.Visible = False
    End If
    

    效果很好。我在这里有点迷茫,因为我习惯了 Excel,我可以直接将事物称为 OLEObject.Object,但即使您仍然指的是 OLEObjects,OLEFormat 似乎也有点不同。只是遇到了一些问题。

    【讨论】:

    • 而 Intellisense 不提供任何帮助。但在大多数情况下,如果您查看 VBA 表单上等效命令按钮的属性和方法,它们将应用于幻灯片上命令按钮的 OLEformat.Object。这将提供 Intellisense 帮助。
    猜你喜欢
    • 1970-01-01
    • 2018-09-27
    • 2020-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-28
    • 2012-03-16
    相关资源
    最近更新 更多