- ベストアンサー
アクセスのマクロについて
期間の抽出マクロにおいて、入社日と退職日の年数計算をするときに、退職日が未入力の場合(現職の方)、入社日から本日までの在職年数を計算する方法を教えてください。 入社日と退職日が両方とも入っている場合は計算できるのですが、退職日が未入力の場合はエラーと表示されます。よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> クエリ上に > > 在職期間: userKikan([入社日],[退職日]) 在職期間: DateDiff("yyyy",[入社日],IIF(IsNull([退職日],Now(),[退職日])) でどうでしょうか?
その他の回答 (2)
- Gin_F
- ベストアンサー率63% (286/453)
> 入社日と退職日が両方とも入っている場合は計算できるのですが、 現在の式がどうなっているのか分かりませんが、 > 退職日が未入力の場合はエラーと表示されます。 IIF(IsNull([退職日]),Now(),[退職日]) 退職日の部分を上記のようにすれば、大丈夫だと思います。
お礼
皆様ありがとうございました。今気になって Public Function userKikan(nyuusya As Date, taisya As Date) As Variant を、 Public Function userKikan(nyuusya, taisya) As Variant に変えたら、できました。ありがとうございました。
補足
回答ありがとうございます。まだうまくいきません(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 としましたが、相変わらずエラーです。再度お願いします。
- h_i_r_o_b_o_w
- ベストアンサー率17% (26/145)
退職日のセル値を読む込んだ後、退職値のセルが空欄か入力かどうかで条件分岐後、期間計算をするようにしたらどうですか? 例えばB1セルに退職日が入っているとして Dim myDate Sub kikan() If Cells(1, 2).Value = "" Then myDate = Date Else myDate = Cells(1, 2).Value End If 'myDateには空欄なら本日の日付が入り、退職日が入力されてればその日が入っている。 'ここに期間を求める計算式 End Sub
補足
早速の回答ありがとうございます。ところで入社日や退職日のデータは、社員名簿クエリ上にあります。クエリ上のデータもエクセルのようにセルの関数が使えるのでしょうか?うまくできないので、さらに詳しくお願いします。
お礼
ありがとうございました。うまくできました。