プロが教えるわが家の防犯対策術!

当方バリバリの初心者で、的外れな質問かも知れませんがどなたか教えてください。

フィールドA~Dの4つのフィールドをレポートに表記する際に、
(1)データが空でないときだけフィールド名と共にデータを表記する。
(2)各フィールドがそれぞれ改行された状態で並ぶ。
(3)空のフィールドがあったらその分は行を詰める。

つまりABDにデータがあってCが空の場合、レポートを下記のように表記したいと思っています。

・フィールド名A: データA
・フィールド名B: データB
・フィールド名D: データD

考え方としてはレポート上にテキストボックスを作って、『=IIf(IsNull([フィールドA])=False,”フィールド名A:” & [フィールドA],Null) & IIf(IsNull([フィールドB])=False,”フィールド名B:” & [フィールドB],Null) ~』 という形で単純に繋いで処理したいのですが、そうすると改行が入りません。

モジュール(vbNewLine)を作らずに、何か簡単にテキストボックス上で処理する方法はありませんでしょうか。

A 回答 (2件)

横レス失礼致します。



> 何か私の書き方に問題があるのでしょうか。

「vbCrLf」はVBAの組み込み定数ですが、これはコントロールソースやマクロの式には
使えません。

ですので、「vbCrLf」の代わりに、Chr関数を使用して改行コードを入れてください。
(「Chr(13) & Chr(10)」で「vbCrLf」に相当します:順逆は不可)

=IIf(IsNull([フィールドA]),"","フィールドA:" & [フィールドA] & Chr(13) & Chr(10)) & IIf(IsNull([フィールドB]),"","フィールドB:" & [フィールドB] & Chr(13) & Chr(10)) ~


※個人的な趣味で、
  IIF関数の条件式を「IsNull(~)」(「=True」省略)に変更&引数の順を反転
  IIF関数の第2引数(=True時の値)を「Null」から「""」(空文字)に変更
 させていただきました。
    • good
    • 0
この回答へのお礼

出来ました!ありがとうございました。条件式もご提案いただいた形のほうが短くてすっきりしますね。

お礼日時:2009/05/27 08:10

=IIf(IsNull([フィールドA])=False,”フィールド名A:” & [フィールドA] & VbCrLf,Null) & IIf(IsNull([フィールドB])=False,”フィールド名B:” & [フィールドB] & VbCrLf,Null) ~


のようにフィールドA~Cの後ろに& VbCrLf(改行コード)を追加してください
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。

早速アドバイスいただいたように書き込んでレポートをセーブしたところ、条件文が=IIf(IsNull([フィールドA])=False,”フィールド名A:” & [フィールドA] & [VbCrLf],Null)のようにVbCrLfが自動的にカギ括弧で括られてしまい、存在しないフィールドとしてNGになってしまいます。

何か私の書き方に問題があるのでしょうか。

お礼日時:2009/05/26 18:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!