Excel VBA后续事件不起作用

时间:2017-07-21 14:37:14

标签: excel vba excel-vba

我有这张纸,我想在每次保存原始纸张时复制它。

为实现这一点,我尝试在AfterSave上使用ThisWorkBook来调用模块上的宏。

代码如下:

Private Sub Workbook_AfterSave(ByVal Success As Boolean)

If Success Then
Application.EnableEvents = False

Call CopiarNovaPlanilha

Application.EnableEvents = True
End If
End Sub

Application.EnableEvents只是为了避免在学习HERE时出现循环。这里是模块内的宏:

Sub CopiarNovaPlanilha()

ActiveWorkbook.SaveCopyAs "I:\CGP\DEOPEX\01 - Supervisão\10 - Alocação das equipes\Consulta Alocados\ALOCACAO TECNICOS.xlsx"

End Sub

虽然AfterSave并非如此,但此代码运作正常,因此当我保存原始文件时,它并未按原样调用我的子文件。

有人知道这件事发生了什么吗?

4 个答案:

答案 0 :(得分:1)

试试这个,认为这是因为你没有测试成功价值的条件。你需要检查它是真还是假

Private Sub Workbook_AfterSave(ByVal Success As Boolean)

If Success = True Then

    Application.EnableEvents = False

    Call CopiarNovaPlanilha

    Application.EnableEvents = True

End If

End Sub

答案 1 :(得分:0)

直接从工作簿事件中调用sub有时会导致问题。我建议你尝试的只是简单地将你的sub的内容放入AfterSave事件中:

Private Sub Workbook_AfterSave(ByVal Success As Boolean)

 Application.EnableEvents = False

 ActiveWorkbook.SaveCopyAs "I:\CGP\DEOPEX\01 - Supervisão\10 - Alocação das equipes\Consulta Alocados\ALOCACAO TECNICOS.xlsx"

 Application.EnableEvents = True

End Sub

考虑到你没有在你的sub中使用任何变量,我不明白为什么这不起作用!

答案 2 :(得分:0)

将:application.events = false放在CopiarNovaPlanilha()中:

  Private Sub Workbook_AfterSave(ByVal Success As Boolean)

Call CopiarNovaPlanilha

End Sub

对于模块:

Sub CopiarNovaPlanilha()

    Application.EnableEvents = False

    ActiveWorkbook.SaveCopyAs "file location"
    Application.EnableEvents = True
    End Sub

答案 3 :(得分:0)

我遇到一个问题,那就是AfterSave事件没有触发,并且我发现仅在打开Visual Basic开发环境时才会发生。当我关闭VBA编辑器时,AfterSave事件会按预期触发。