hiroton
2020/08/03 (月) 09:44:15
46c09@f966d
このQA面白いですね。とても勉強になります
buf = "a" & "1" 'a1'
buf = "a" + "1" 'a1'
buf = "a" & 1 'a1'
buf = "a" + 1 'エラー'
buf = "a" & Null 'a'
buf = "a" + Null 'Null'
buf = "a" & "" 'a'
buf = "a" + "" 'a'
buf = Format("a", "追加文字&") '追加文字a'
buf = Format("", "追加文字&") '(空文字)'
buf = Format(Null, "追加文字&") '(空文字)'
kitasueさん、cerophanさん
VBAは文字列の連結に「+」を許容しますが、特別な理由がない限り「&」を使うべきです。Nz()関数は評価値がNullであることを条件に特別な処理をする関数ですが、評価値の最初にChr(13)
がある時点で、これがNullになることがあるのか?と疑問に思ってしまいます。条件分岐で処理をするなら
IIf([添付2案件]<>"",Chr(13) & Chr(10) & [添付2案件])
とするほうが、何をしているのかわかるコードになります。hatenaさん指摘のとおり、データ形式によってはうまく動作しないことも考えられます
Format 関数
改めて眺めていましたが難しい関数ですね。
1 セクションのみ 書式はすべての文字列データに適用されます。
2 セクション 最初のセクションは文字列データに適用され、第 2 のセクションは Null 値と長さ 0 の文字列 ("") に適用されます。
Nullはまだしも「長さ0の文字列("")」は「すべての文字列データ」に該当しないんですねぇ
何もしないためにFormat()関数を使うのはかなり高等テクニックだと思います。さすがhatenaさんですね
通報 ...
hiroton さん
+と&の違いは気になっていたところでした。詳しく教えていただきありがとうございます。
確かに、IIfだとわたしでも理解できました。
Format関数の解説もありがとうございます。あとでじっくり確認させていただきます。