PowerPoint同时显示两个MsgBox

时间:2014-09-09 15:11:40

标签: vba ribbon powerpoint-vba

从Developer |加载插件时的奇怪行为AddIns功能区......

观察加载项的Auto_Open过程首先触发,但是WHILE显示该消息框(在正常情况下暂停执行等待用户输入 - 释放MsgBox),功能区的onLoad事件也会触发(显然是在点击第一个消息框中的任何位置时),同时显示另一个消息框!

enter image description here

你有没有看到同时显示两个消息框?这些不是无模式显示的用户形式,它们是简单的MsgBox提示。

有什么可以解释这种行为?什么可以阻止它?

奇怪的是,一旦加载了加载项,事件就会被我考虑的事情触发"正常"顺序顺序:首先是Auto_open,然后是onLoad,但只有在您解除了第一个msgbox后才会这样。

Ribbon OnLoad程序:

'This procedure hooks to the ChartBuilder_PPT Add-in menu
Option Private Module
Option Explicit
Private rib As IRibbonUI
''Callback for customUI.onLoad
Sub RibbonOnLoad(ribbon As IRibbonUI)
    MsgBox "RibbonOnLoad"
    Set rib = ribbon
    'Call UPDATE(rib)
End Sub

在另一个模块中,

Option Explicit
Const AddInName As String = "ChartBuilder_PPT.ppam"
Const ShortName As String = "ChartBuilder_PPT"
Sub Auto_Open()
    MsgBox "Auto_Open"
    Call UnloadCB
End Sub
Sub Auto_Close()
    Call UnloadCB
End Sub
Sub UnloadCB()

If AddInExists Then
    Application.AddIns(ShortName).Loaded = msoFalse
Else

End If
Function AddInExists() As Boolean
Dim a As AddIn
    For Each a In Application.AddIns
        If a.Name = ShortName Then
            AddInExists = True
            a.AutoLoad = msoCTrue
            Exit For
        End If
    Next
End Function

0 个答案:

没有答案