Curious use of ByVal keyword in VBA event

  • Thread starter Thread starter onedaywhen
  • Start date Start date
O

onedaywhen

I have a WithEvents combo object in a class and I'm using its KeyPress
events. Here is the line VBA inserted into my code:

Private Sub m_oCombo_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

The KeyAscii variable is actually being passed by reference, of
course, otherwise I wouldn't be able to suppress certain characters.
So why the ByVal keyword? It confused me for a while this morning. Is
it this something to do with ByVal being overloaded e.g. for use in
the Declare keyword?
 
The MSForms.ReturnInteger is an object type variable, and all objects are
passed by passing the address of the object. The 'ByVal' and 'ByRef'
qualifiers indicate whether the address of the object is passed ByVal or
ByRef. In the KeyPress procedure, the address of KeyAscii is passed ByVal.
 
Back
Top