web-dev-qa-db-fra.com

Comment concaténer des chaînes dans VBA?

Cette question provient d'un commentaire sous Range.Formula = dans VBA génère une erreur étrange .

J'ai écrit ce programme par essais et erreurs et j'ai donc naturellement essayé + pour concaténer des chaînes.

Mais & est-il plus correct que + pour concaténer des chaînes?

48
ilya n.

& est toujours évalué dans un contexte de chaîne, alors que + ne peut pas concaténer si l'un des opérandes n'est aucune chaîne:

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

C'est simplement une source subtile de bugs potentiels et doit donc être évité. & always signifie "concaténation de chaînes", même si ses arguments ne sont pas des chaînes:

"1" & "2" => "12"
"1" &  2  => "12"
 1  & "2" => "12"
 1  &  2  => "12"
"a" &  2  => "a2"
99
Joey

La principale différence (très intéressante) pour moi est que:
"string" & Null -> "string"
tandis que
"string" + Null -> Null

Mais c'est probablement plus utile dans les applications de base de données comme Access.

1
Patrick Honorez

Il y a la fonction concaténer. Par exemple

= CONCATENER (E2, "-", F2)
Mais l'opérateur & concatène toujours les chaînes. + fonctionnera souvent, mais s'il y a un nombre dans l'une des cellules, cela ne fonctionnera pas comme prévu.

0
wallyk