个人VBA代码工作簿 - 在所有/任何打开的工作簿中的BeforeClose事件

时间:2015-05-27 13:17:24

标签: excel vba excel-vba

我已在Workbook_BeforeClose中写了PERSONAL.XLSB个活动,我希望将其应用于所有/任何已打开的工作簿。

该代码旨在查找工作簿标题中的特定文本字符串,并在找到文本字符串时标记消息框。

Public Sub Workbook_BeforeClose(Cancel As Boolean)
Dim pos As Integer
Dim iRet As Integer
Dim strPrompt As String
Dim strTitle As String

' Test
pos = InStr(ThisWorkbook.Name, "<Insert String here>")

If pos <> 0 Then

    ' Prompt
    strPrompt = "<Message>"

    ' Dialog's Title
    strTitle = "<Title>"

    ' Display MessageBox
    iRet = MsgBox(strPrompt, vbYesNo, strTitle)

    ' Check pressed button
    If iRet = vbNo Then
        Cancel = True
    Else
    End If

End If

End Sub

我很感激,因为这个宏位于我的PERSONAL.XLSB工作簿中,它只适用于自己。

我正在寻找一种解决方案,其中个人关闭之前的宏可以应用于所有/任何本身不包含宏的打开的工作簿。

1 个答案:

答案 0 :(得分:0)

这可以通过捕获Application事件而不是Workbook事件来完成。

来源:http://www.mrexcel.com/forum/excel-questions/488682-automatically-run-workbook-event-workbook-open.html

Private WithEvents AppEvents As Application

Private Sub Workbook_Open()

    Set AppEvents = Application

End Sub

Private Sub AppEvents_WorkbookBeforeCloseEventHandler(ByVal Wb As Workbook)

    If Not Wb Is Me Then
        Call YourMacro(Wb)
    End If

End Sub

只需将您的代码封装在Sub中,并在指示“YourMacro”的地方调用它。

希望这会有所帮助。欢呼声。