• ベストアンサー

テキストボックスに入力の日付から年度末を計算する

お世話になっております。Accessを始めて4週間の初心者です。 今、同一フォーム(フォーム名:社員登録)内に2つのテキストボックスを配置し、 片方に日付を手入力したら、もう一方に年度末日付を自動表示させたいと思っ ていますが、方法が分かりません。 検索してみると、本日の日付から年度末を自動計算させる・・は出てきますが 今回のような事例にたどり着けていません。 例1 一方 2016/12/1 ならば 片方 2017/3/31 例2 一方 2019/4/1 ならば 片方 2020/3/31 何卒、お力添え頂きたく、お願い致します。

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

  • ベストアンサー
回答No.2

日付を入力するテキストボックス名を、『txt日付』として、年度末日付を自動表示するテキストボックスのコントロールソースに下記の式を設定してください。 =DateSerial(Year(DateAdd("m",9,[txt日付])),3,31)

vesper580109
質問者

お礼

hatena1989さん ご回答ありがとうございました。また返信遅くなり、申し訳ございませんでした。 コントロールソースに式を設定する事で、年度末表示ができました。 自在に使える関数の種類、知識を増やしていきたいと思います。 お礼申し上げます。

その他の回答 (2)

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.3

期初月(1~12)と基準日から期初日、期末日、月初日、月末日を求めます。 Private Sub 基準日変更RTN() If Month(基準日) < 期初月 Then 期初日 = DateValue(Year(基準日) - 1 & "/" & 期初月 & "/" & 1) Else 期初日 = DateValue(Year(基準日) & "/" & 期初月 & "/" & 1) End If 期末日 = 期初日 + 366: 期末日 = 期末日 - Day(期末日) 月初日 = 基準日 - Day(基準日) + 1 月末日 = 月初日 + 31: 月末日 = 月末日 - Day(月末日) End Sub

vesper580109
質問者

お礼

chayamatiさん ご回答ありがとうございました。また返信遅くなり、申し訳ございませんでした。 VBAのAccessへの組み込み方等、まだまだ勉強不足ですが、書かれている内容は 理解できました。 お礼申し上げます。

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.1

こんにちは Public f As Boolean Private Sub Form_Open(Cancel As Integer)   f = False End Sub Private Sub テキスト0_BeforeUpdate(Cancel As Integer)   Dim s As String   If f = False Then     f = True     s = Me.テキスト0.Text     If Month(s) > 3 Then       Me.テキスト2 = Year(s) + 1 & "/3/31"     Else       Me.テキスト2 = Year(s) & "/3/31"     End If     f = False   End If End Sub Private Sub テキスト2_BeforeUpdate(Cancel As Integer)   Dim s As String   If f = False Then     f = True     s = Me.テキスト2.Text     If Month(s) > 3 Then       Me.テキスト0 = Year(s) + 1 & "/3/31"     Else       Me.テキスト0 = Year(s) & "/3/31"     End If     f = False   End If End Sub ちょっと適当ですけど、こんな感じで。

vesper580109
質問者

お礼

ushi2015さん ご回答ありがとうございました。また返信遅くなり、申し訳ございませんでした。 VBAも勉強中の身ですが、いちおうご回答頂いた内容で理解できました。 Accessへの組み込み方等、分からない部分も多いので、勉強していきます。 先ずはお礼申し上げます。

関連するQ&A