• ベストアンサー

アクセスのマクロについて

期間の抽出マクロにおいて、入社日と退職日の年数計算をするときに、退職日が未入力の場合(現職の方)、入社日から本日までの在職年数を計算する方法を教えてください。 入社日と退職日が両方とも入っている場合は計算できるのですが、退職日が未入力の場合はエラーと表示されます。よろしくお願いします。

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

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

> クエリ上に > > 在職期間: userKikan([入社日],[退職日]) 在職期間: DateDiff("yyyy",[入社日],IIF(IsNull([退職日],Now(),[退職日])) でどうでしょうか?

fusetech
質問者

お礼

ありがとうございました。うまくできました。

その他の回答 (2)

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

> 入社日と退職日が両方とも入っている場合は計算できるのですが、 現在の式がどうなっているのか分かりませんが、 > 退職日が未入力の場合はエラーと表示されます。 IIF(IsNull([退職日]),Now(),[退職日]) 退職日の部分を上記のようにすれば、大丈夫だと思います。

fusetech
質問者

お礼

皆様ありがとうございました。今気になって Public Function userKikan(nyuusya As Date, taisya As Date) As Variant を、 Public Function userKikan(nyuusya, taisya) As Variant に変えたら、できました。ありがとうございました。

fusetech
質問者

補足

回答ありがとうございます。まだうまくいきません(T_T) クエリ上に 在職期間: userKikan([入社日],[退職日]) として、マクロで Public Function userKikan(nyuusya As Date, taisya As Date) As Variant taisya = IIf(IsNull(taisya), Date, taisya) userKikan = DateDiff("yyyy", nyuusya, taisya) End Function としましたが、相変わらずエラーです。再度お願いします。

回答No.1

退職日のセル値を読む込んだ後、退職値のセルが空欄か入力かどうかで条件分岐後、期間計算をするようにしたらどうですか? 例えばB1セルに退職日が入っているとして Dim myDate Sub kikan() If Cells(1, 2).Value = "" Then myDate = Date Else myDate = Cells(1, 2).Value End If 'myDateには空欄なら本日の日付が入り、退職日が入力されてればその日が入っている。 'ここに期間を求める計算式 End Sub

fusetech
質問者

補足

早速の回答ありがとうございます。ところで入社日や退職日のデータは、社員名簿クエリ上にあります。クエリ上のデータもエクセルのようにセルの関数が使えるのでしょうか?うまくできないので、さらに詳しくお願いします。

関連するQ&A