The KeyDown event has the KeyCode parameter. The KeyPress event has the KeyAscii parameter. Technically, they are not the same thing, although many keycode constants have the same Ascii value (numeric keys 0-9 and capitol letters A-Z) many do not.

As you noted,

KeyAscii 187 is >>, KeyCode 187 is the += key (the ascii code for the + sign is 43).

The constant vbKeyAdd refers to the + key on the keypad. You probably used "Or KeyCode = 187" because there is no intrinsic constant for the += key. Thus your code handles both + key's that are available on a keyboard. If however, you needed to distinguish between the = and +, then you would need to check the Shift parameter of the KeyDown event.

To duplicate your code in the KeyDown event into the KeyPress event you would need to write ( again this forces the user to do a Shift +, if not using the keypad)

If Keyascii = 43 Then

ElseIf Keyascii = 45 Then
..

There are topics in msdn called KeyCode Constants and Ascii Character Codes.