PDA

View Full Version : Inserting an event procedure



counterrojo
12-15-2011, 08:06 PM
I found the following code on the internet:

Sub CreateEventProcedure()
Dim VBProj As VBIDE.VBProject
Dim VBComp As VBIDE.VBComponent
Dim CodeMod As VBIDE.CodeModule
Dim LineNum As Long
Const DQUOTE = """" ' one " character
Set VBProj = ActiveWorkbook.VBProject
Set VBComp = VBProj.VBComponents("ThisWorkbook")
Set CodeMod = VBComp.CodeModule

With CodeMod
LineNum = .CreateEventProc("Open", "Workbook")
LineNum = LineNum + 1
.InsertLines LineNum, " MsgBox " & DQUOTE & "Hello World" & DQUOTE
End With
End Sub



I am trying to modify it to add the Workbook_SheetCalculate(ByVal Sh As Object) event catcher. Here is my modifications so far:

Sub CreateEventProcedure()
Dim VBProj As VBIDE.VBProject
Dim VBComp As VBIDE.VBComponent
Dim CodeMod As VBIDE.CodeModule
Dim LineNum As Long
Const DQUOTE = """" ' one " character
Workbooks("Enhance GL Reporting_Sample Report (2).xlsm").Activate
Set VBProj = ActiveWorkbook.VBProject
Set VBComp = VBProj.VBComponents("ThisWorkbook")
Set CodeMod = VBComp.CodeModule

With CodeMod
LineNum = .CreateEventProc("SheetCalculate", "Workbooks(""Enhance GL Reporting_Sample Report (2).xlsm"")")





LineNum = LineNum + 1
.InsertLines LineNum, " MsgBox " & DQUOTE & "Hello World" & DQUOTE
End With
End Sub


I keep on getting run-time error 57017: Event handler is invalid. I have tried several variations on the the event code: Workbook_SheetCalculate(ByVal Sh As Object), Workbook_SheetCalculate, and SheetCalculate. All result in the same error. This is the first time I have tried to add code to a workbook using code. Any idea what I am doing wrong?

Thank you!

Aflatoon
12-16-2011, 03:58 AM
It should be similar to the first one:
With CodeMod
LineNum = .CreateEventProc("SheetCalculate", "Workbook")

counterrojo
12-16-2011, 11:29 AM
Silly me. Thanks Aflatoon!