引用:
dlookupで範囲を指定する
今回のような場合、DLookup 関数を使用するべきではないでしょう。
引用:
流動負債の科目は2111から2115
引用:
If DLookup("残高", "T集計決算書", "コード BETWEEN 2111 AND 2115") = 0 Then
・上記の条件に該当するレコードが[T集計決算書]に 2 件以上存在する場合、
DLookup 関数はそれらのうちのいずれか 1 件のレコードを参照して
そのレコードのフィールド[残高]の値を返すが、
実際にどのレコードが
参照されるかを予見、特定することは事実上不可能である。
引用:
コード/勘定科目/前月残高/借方/貸方/残高
引用:
2111/支払手形/100000/100000/----/0
・DLookup 関数によって(
たまたま)参照されたレコードの[残高]の値が 0 であれば、
DLookup 関数の戻り値も 0 となる。
(よって、前述の If ステートメントにおける条件式の結果は True となる)
引用:
流動負債のデータがない場合
・前述の条件に該当するレコードが 0 件だった場合、
DLookup 関数の戻り値は Null となる。
・前述の条件に該当するレコードが 1 件以上であり、かつ
DLookup 関数によって参照されたレコードの[残高]の値が Null であれば、
DLookup 関数の戻り値も Null となる。
・もし[T集計決算書]の全てのレコードにおいて[残高]の値が Null にならないことが
保証されていないのであれば、上記の 2 つの状態を DLookup 関数の戻り値によって
区別することは不可能である。
したがって、DLookup 関数によって「レコードの有無」を判定することは
あまり適切ではありません。
このような場合は、DLookup 関数ではなく DCount 関数を使用して
レコード件数を取得するようになさればよいでしょう。