• ベストアンサー

Accessのクエリとモジュールで…

モジュールは以下のようになっています。 Public Function HanName(Han As String) If [Han] <> "" Then HanName = DLookup("[班名]", "[T_班]", "[班ID]=" & [Han]) Else HanName = "" End If End Function クエリの フィールド1に[班1]というフィールドがあり、 フィールド2に HanName([班1]) といれました。 班1が入力されているものについては、きちんと動作されるのですが、 班1が空欄の場合、#Errorとなってしまいます。 どのように直せばいいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • paz777
  • ベストアンサー率47% (77/163)
回答No.4

こんにちは。 エラーですか・・・ ではフィールド2の式を =IIf(IsNull([班1]),"",HanName([班1])) にしてみる。 または、Functionの引数の形式を[String]から[Variant]にして[IsNull]判定を入れてみる。 ではどうでしょうか? ではでは・・・

w-inty
質問者

お礼

回答ありがとうございます。 とりあえず式を入力したところ無事できたようです。 ありがとうございます。 >または、Functionの引数の形式を[String]から[Variant]にして[IsNull]判定を入れてみる。 というのは、形式を変更して後は普通にモジュールをかけばいいのでしょうか?

その他の回答 (4)

  • paz777
  • ベストアンサー率47% (77/163)
回答No.5

正常に動作したようで安心しました。 >>または、Functionの引数の形式を[String]から[Variant]にして[IsNull]判定を入れてみる。 > >というのは、形式を変更して後は普通にモジュールをかけばいいのでしょうか? はい。その通りです。 あれ?回答欄を読み返してみたら#3の方の回答と同じでした。 #3の方の方法はお試しになりましたでしょうか? (式の変更ではなく、モジュールの変更の方です)

w-inty
質問者

お礼

回答ありがとうございます。 >あれ?回答欄を読み返してみたら#3の方の回答と同じでした。 >#3の方の方法はお試しになりましたでしょうか? そこの部分、見落としてました…(恥) 今試してみたら無事できました! ありがとうございました。

  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.3

> Public Function HanName(Han As String) > > If [Han] <> "" Then Public Function HanName(Han As Variant) If Not IsNull(Han) Then で大丈夫だと思います。 ただ、このぐらいなら、式を直接クエリに入れてもいいような。。 Nz(DLookup("[班名]", "[T_班]", "[班ID]=" & [班1]),"")

w-inty
質問者

お礼

回答ありがとうございます。 実はIsnullバージョンというか、これも自分でやってみたんですが、できなかったんです。 それと式にしなかったのは、これの後にも続くからなんです。 ありがとうございました。

w-inty
質問者

補足

状態を詳しく書くと、 合計    班1    班2  … -------------------------------------- #Error #Error #Error ○○    ○○ #Error #Error というようになっています。 この「#Error」の部分を空欄にしたいんですが…。

noname#21585
noname#21585
回答No.2

Public Function HanName(Han As String)   If isNull(Han) = False Then     HanName = DLookup("[班名]", "[T_班]", "[班ID]=" & Han)   Else     HanName = ""   End If End Function 動作確認していませんので動かなかったらごめんなさい。

w-inty
質問者

お礼

回答ありがとうございます。 試してみましたが、エラーになってしまいました…。 原因が自分でもわかりません(><)

  • paz777
  • ベストアンサー率47% (77/163)
回答No.1

こんにちは。 「If [Han] <> "" Then」の前にNull判定を行えば良いように思います。 例) ------------------------------------------------- If IsNull([Han]) Then HanName = "" else If [Han] <> "" Then   ・・・ End If ------------------------------------------------- お試しください。

w-inty
質問者

お礼

回答ありがとうございます。 試してみましたが、エラーになってしまいました…。 原因が自分でもわかりません(><)

関連するQ&A