I have seen many believe in the following
VBA converts all integer values to type Long
In fact, even the MSDN article says
I've spent a lot of time working in the VBA environment and have every reason to believe that the claim in this article is at best, misleading.
I've never come across a situation where an automatic unexpected conversion is made. Of course, assignment by value to a larger type (such as a Double
or Long
) would be implicit.
One specific case where automatic conversion would be a breaking change would be an assignment to a Variant
type. Without a conversion, the type would be VT_I2, with conversion VT_I4.
Passing an Integer type ByRef
to a function expecting a Long
emits a type mismatch in Office 2013.
I suspect they are referring to the internal storage of the Integer
: it's very likely that they are not aligned on 16 bit words in memory (cf. a short
structure member in C / C++). They are probably talking about that.