5.5.1.1 Static semantics

Let-coercion between the following pairs of source declared types or literals and destination declared types is invalid:

Source Declared Type or Literal

Destination Declared Type

Any type

Any fixed-size array

Any numeric type or Boolean or Date

Resizable Byte()

Any type except a non-Byte resizable or fixed-size array or Variant

Any non-Byte resizable array

Any type except a UDT or Variant

Any UDT

Any type except Variant

Any class or Object

Any class which has no accessible default Property

Get or function, or which has an accessible default Property Get or function for which it is statically invalid to Let-coerce its declared type to the destination declared type

Any type

Any non-Byte resizable or fixed-size array

Resizable array of different element type than source type or any non-array type except Variant

Any UDT

Different UDT than source type or any non-UDT type except Variant

UDT not imported from external reference or array of UDTs not imported from external reference or array of fixed-length strings

Variant

Nothing

Any type except a class or Object or Variant

 

It is also invalid to implicitly Let-coerce from the LongLong declared type to any declared type other than LongLong or Variant. Such coercions are only valid when done explicitly by use of a CType explicit coercion function.