Excel事件无法正常工作

时间:2016-03-02 18:02:47

标签: vba excel-vba event-handling excel

您好我正在处理一个创建新工作簿并复制一些信息的宏。一切都工作正常,但我添加了一个事件,以突出值的颜色取决于它是否大于或小于以前。偶然工作完美,直到我意识到如果我关闭并重新打开工作表,事件不起作用。所以我稍微调整了我的代码以使其工作。现在它只在我打开新工作簿时有效但是当我运行宏并且新工作表打开并尝试更改值时,我收到以下错误:方法'撤消'对象' _Application'失败。

为了使事件有效,我创建了一类工作簿,并按如下方式添加了应用程序:

 Public WithEvents m_events As Application

这是我的改变子,它在重新打开时工作正常:

Private Sub m_wb_SheetChange(ByVal Sh As Object, ByVal Target As Range)
m_events.EnableEvents = False
m_wb.Sheets("sheet1").Unprotect
Dim oldval As Double
Dim newval As Double
    If Sh.name = "Sheet1" And Not IsEmpty(Target.Value) Then
    newval = Target.Value
    m_events.Undo
    oldval = Target.Value
    Target.Value = newval
    If Target.Value > oldval Then Target.Interior.ColorIndex = 35
    If Target.Value < oldval Then Target.Interior.ColorIndex = 22
    'MsgBox (oldval)
End If
m_wb.Sheets("sheet1").Protect
m_events.EnableEvents = True
End Sub

当我创建工作表时,我在创建新工作表的工作簿上使用以下内容,我创建了一个创建工作表的函数:

Set Newbook.Workbook = AddNew
Set Newbook.m_events = Application

在新纸张上我有一个按钮,当按下时,我有以下行,只有在我关闭并重新打开新纸张时才有效。

Set Newbook.Workbook = ActiveWorkbook
Set Newbook.m_events = Application
Set thisWB = Newbook.Workbook

感谢您的帮助!

0 个答案:

没有答案