Wie kann ich Zeichenfolgen in VBA verketten?

71

Diese Frage stammt aus einem Kommentar unter Range.Formula = in VBA löst einen seltsamen Fehler aus .

Ich habe dieses Programm durch Ausprobieren geschrieben, also habe ich es natürlich versucht + , Zeichenfolgen zu verketten.

Aber ist &es korrekter als das +Verketten von Zeichenfolgen?

ilya n.
quelle

Antworten:

140

&wird immer in einem Zeichenfolgenkontext ausgewertet, +kann jedoch nicht verkettet werden, wenn einer der Operanden keine Zeichenfolge ist:

"1" + "2" => "12"
"1" + 2   => 3
1 + "2"   => 3
"a" + 2   => type mismatch

Dies ist lediglich eine subtile Quelle potenzieller Fehler und sollte daher vermieden werden. bedeutet & immer "String-Verkettung", auch wenn die Argumente keine Strings sind:

"1" & "2" => "12"
"1" &  2  => "12"
 1  & "2" => "12"
 1  &  2  => "12"
"a" &  2  => "a2"
Joey
quelle
Was ist mit einer zweistelligen Ganzzahl? wie 13 & "2"? wäre das 132?
Adjit
5
@adjit: Ja, das würde es. Das können Sie übrigens ganz einfach testen.
Joey
3

Der Hauptunterschied (sehr interessant) für mich ist:
"string" & Null-> "string"
während
"string" + Null->Null

Aber das ist wahrscheinlich nützlicher in Datenbank-Apps wie Access.

Patrick Honorez
quelle
0

Es gibt die Verkettungsfunktion. Zum Beispiel

= CONCATENATE (E2, "-", F2)
Der Operator & verkettet jedoch immer Zeichenfolgen. + funktioniert oft, aber wenn sich in einer der Zellen eine Nummer befindet, funktioniert dies nicht wie erwartet.

Wallyk
quelle