Microsoft Access 掲示板

iifのネスト / 1

8 コメント
views
4 フォロー
1
hiroton 2020/03/19 (木) 18:53:30 6de21@f966d

日付をコード上に直接日付の書式を使って記述する場合は「#」で囲む必要があります。

 2020/3/1
〇 #2020/3/1#

VBAにはある期間に含まれるを直接的に表現する方法はありませんので、2つの条件(開始条件、終了条件)を組み合わせて表現します。条件の組み合わせなのでiifをネストさせても表現できますが論理演算子を用いると簡単です。

2020/3/1から2020/3/31の間にある場合

C >= #2020/3/1# AND C <= #2020/3/31#

これを組み合わせて質問の条件をそのまま書けば

iif( 今日 < C, A, iif( C >= #2020/3/1 AND C <= #2020/3/31#, B, A))

となりますが条件を整理して

iif( 今日 > C AND C >= #2020/3/1# AND C <= #2020/3/31#, B, A)

とするとすっきりして良いと思います。(今日 > C部分で上の式と比較演算子が変わっているところに注意してください)

通報 ...
  • 2

    2020/3/1をKARA、2020/3/31をMADEとして式を入れてみました。

    一番下の整理した式ではうまくいきませんでしたので

    iif(今日 < C , A , iif( C >= KARA and C <= MADE , B , A ))

    で、実行しましたが、やはりうまくいきません。

    今日がCを過ぎていて、CがKARAとMADEの期間内であればB、期間外であればAを表示したいのですが
    すべてAが表示されてしまいます。。。

    4
    hiroton 2020/03/23 (月) 08:19:02 bfed6@f966d >> 2

    変数への代入に問題があると思われます。関係するコードをすべて提示してください