I have very recently realized that VBA supports also the operator +
to concatenate String
type, and not only &
.
Hence, if
Dim a As String, b As String
a = "Stack "
b = "Overflow"
the following statements will produce the same result:
>> a + b '--> "Stack Overflow"
>> a & b '--> "Stack Overflow"
In my limited experience I have never found in any language two operators doing always the same thing. I feel like VBA is tending to merge to other common languages (using only +
for concatenating strings) but still supporting the &
for old-school VB developers.
But this doesn't sound much as a technical explanation, so I'd like to ask the following question: is there any practical difference between the two operators? Does a case where using +
rather than &
yields a different result?
A possible "like-answer" that I have in mind but cannot find anywhere in the web was inspired by JavaScript, where you can use the ==
and ===
almost everywhere with the same behavior, except that The identity (===) operator behaves identically to the equality (==) operator except no type conversion is done, and the types must be the same to be considered equal.
OK, I found it. Try this:
Debug.Print "3" + 4 '--> 7
and compare it to this:
Debug.Print "3" & 4 '--> "34"
Ahh! See the difference now? The choice of &
vs. +
affects what the default type it coerces the operands of these expressions to.
The +
will try to convert the String
in Numeric
and, if possible, will treat them as such. The &
, on the other hand, will keep treating the elements as String
even if they're both convertible in Numeric
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With