Rules For (+):
Both expressions are numeric data types (Byte, Boolean, Integer, Long, Single, Double, Date, Currency, or Decimal): Add.
Both expressions are String: Concatenate.
One expression is a numeric data type and the other is any Variant except Null: Add.
One expression is a String and the other is any Variant except Null: Concatenate.
One expression is an Empty Variant Return the remaining expression: unchanged as result.
One expression is a numeric data type and the other is a String: A Type mismatch error occurs.
Either expression is Null: result is Null.
If both expressions are Variant expressions, the following rules apply:
If Both Variant expressions are numeric: Add.
Both Variant expressions are strings: Concatenate.
One Variant expression is numeric and the other is a string: Add.
Rules for (&)
Both expressions are numeric data types (Byte, Boolean, Integer, Long, Single, Double, Date, Currency, or Decimal): Concatenate a string.
Both expressions are String: Concatenate.
One expression is a numeric data type and the other is any Variant except Null: concatenate.
One expression is a String and the other is any Variant except Null: Concatenate.
One expression is an Empty Variant Return the remaining expression: returns the one non empty value.
One expression is a numeric data type and the other is a String: concatenates a string
Either expression is Null: a string of the first value.
If both expressions are Variant expressions, the following rules apply:
If Both Variant expressions are numeric: concatenate.
Both Variant expressions are strings: Concatenate.
One Variant expression is numeric and the other is a string: concatenate.