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