スキップしてメイン コンテンツへ

 none
Access 独自関数の引数のデフォルト値にシステム日を渡したい RRS feed

  • 質問

  • 自前の関数を作成し、そのデフォルト値にシステム日を渡したいのですが、方法をご存じの方教えて下さい。
    具体的には下記例の"XXXX"の部分の記述が判りません。
      Public Function ABC(Optional pDate As Date = XXXX)
    XXXXに"Date()"と記述しても()が取れて、「(Dateという)定数式が必要です。」というコンパイルエラーが出ます。
    また、初期値Date()の変数を立てたくても「プロシージャ外では無効です。」のエラー。
    まあ最悪、関数の実行時に毎回引数を渡せば良いだけの話なのですが...
    2019年11月12日 9:20

回答

  • Optional の既定値には定数式が必要ですので、引数を As Variant に変更して、
    ABC メソッド内に「If IsMssing(pDate) Then pDate = XXXX」を記述することになるかと。

    もしくは省略可能引数を使わず、「Function ABCDefault() As Foo」と「Function ABC(pDate As Date) As Foo」のペアにするか…。

    • 回答としてマーク 一郎九郎 2019年11月13日 2:28
    2019年11月12日 9:34

すべての返信

  • Optional の既定値には定数式が必要ですので、引数を As Variant に変更して、
    ABC メソッド内に「If IsMssing(pDate) Then pDate = XXXX」を記述することになるかと。

    もしくは省略可能引数を使わず、「Function ABCDefault() As Foo」と「Function ABC(pDate As Date) As Foo」のペアにするか…。

    • 回答としてマーク 一郎九郎 2019年11月13日 2:28
    2019年11月12日 9:34
  • 魔界の仮面弁士さん、ありがとうございました。

    IsMissing関数と、引数の型のチェック文を加えることで解決しました。

    教えて頂いて何ですが、関数のスペルが誤っています。

    正しくは IsMissing()ですね。(後にこのスレッドを参考になさる方がいるかも知れないので...)


    2019年11月13日 2:24