It prints because it's a Before_Print event. User commands to print, but before that, you command it to do what you want...it still has the print command so when your code is done, it will print unless you tell it not to in your code. The Before_Print event should set Cancel as Boolean (at the top) if you don't want it to print then:

[VBA]Cancel = True[/VBA]