【问题标题】:need to know when an excel workbook window is being close需要知道 Excel 工作簿窗口何时关闭
【发布时间】:2011-07-05 14:56:59
【问题描述】:

我正在工作并使用 excel 插件,我需要打开同一工作簿的新窗口以在不同的工作表中输入数据。对于新窗口,我需要知道窗口何时关闭,以便对输入的数据进行一些验证。有没有办法知道工作簿窗口何时关闭?

谢谢。

【问题讨论】:

    标签: excel-addins


    【解决方案1】:

    看看这个文档: http://support.microsoft.com/kb/213566

    创建一个模块和一个类模块。代码如下。

    类模块代码:

    Public WithEvents appevent As Application
    
    Dim windowsCount As Integer
    
    
    Private Sub appevent_WindowActivate(ByVal Wb As Workbook, ByVal Wn As Window)
    If windowsCount <> Application.Windows.Count Then
        MsgBox "You closed a window"
    End If
    End Sub
    
    
    Private Sub appevent_WindowDeactivate(ByVal Wb As Workbook, ByVal Wn As Window)
    windowsCount = Application.Windows.Count
    End Sub
    

    模块代码:

    Dim myobject As New Class1
    
    
    Sub Test()
    
    Set myobject.appevent = Application
    
    End Sub
    

    还有这个工作簿的处理程序:

    Private Sub Workbook_Open()
    Test
    End Sub
    

    【讨论】:

    • 谢谢安德森,我会试一试,看看我是否能设法让它以这种方式工作。因为我在功能区中添加了一个按钮,所以用户必须使用按钮而不是窗口上的 X 按钮关闭窗口,这样我就可以运行所需的自定义逻辑。不是理想的解决方案,但这是我迄今为止所能做的。
    【解决方案2】:

    您可以处理BeforeClose 事件。 here 提供了一个使用 VBA 的示例。

    【讨论】:

    • 您好 Frederic,感谢您的回复。 Workbook.BeforeClose 事件仅在最后一个工作簿窗口关闭时触发。我需要的是处理工作簿窗口关闭事件。因此,如果您有 Book1.xlsx:1 和 Book1.xlsx:2,那么我需要知道 Book1.xlsx:2 何时关闭。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-01
    • 1970-01-01
    相关资源
    最近更新 更多