Microsoft Access 掲示板

差込印刷について / 17

23 コメント
views
4 フォロー
17
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さんですね

通報 ...
  • 20
    cerophan 2020/08/03 (月) 10:27:22 0029a@1c915 >> 17

    hiroton さん
    +と&の違いは気になっていたところでした。詳しく教えていただきありがとうございます。
    確かに、IIfだとわたしでも理解できました。
    Format関数の解説もありがとうございます。あとでじっくり確認させていただきます。