- ベストアンサー
テキストボックスに入力の日付から年度末を計算する
お世話になっております。Accessを始めて4週間の初心者です。 今、同一フォーム(フォーム名:社員登録)内に2つのテキストボックスを配置し、 片方に日付を手入力したら、もう一方に年度末日付を自動表示させたいと思っ ていますが、方法が分かりません。 検索してみると、本日の日付から年度末を自動計算させる・・は出てきますが 今回のような事例にたどり着けていません。 例1 一方 2016/12/1 ならば 片方 2017/3/31 例2 一方 2019/4/1 ならば 片方 2020/3/31 何卒、お力添え頂きたく、お願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
日付を入力するテキストボックス名を、『txt日付』として、年度末日付を自動表示するテキストボックスのコントロールソースに下記の式を設定してください。 =DateSerial(Year(DateAdd("m",9,[txt日付])),3,31)
その他の回答 (2)
- chayamati
- ベストアンサー率41% (260/624)
期初月(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
お礼
chayamatiさん ご回答ありがとうございました。また返信遅くなり、申し訳ございませんでした。 VBAのAccessへの組み込み方等、まだまだ勉強不足ですが、書かれている内容は 理解できました。 お礼申し上げます。
- ushi2015
- ベストアンサー率51% (241/468)
こんにちは 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 ちょっと適当ですけど、こんな感じで。
お礼
ushi2015さん ご回答ありがとうございました。また返信遅くなり、申し訳ございませんでした。 VBAも勉強中の身ですが、いちおうご回答頂いた内容で理解できました。 Accessへの組み込み方等、分からない部分も多いので、勉強していきます。 先ずはお礼申し上げます。
お礼
hatena1989さん ご回答ありがとうございました。また返信遅くなり、申し訳ございませんでした。 コントロールソースに式を設定する事で、年度末表示ができました。 自在に使える関数の種類、知識を増やしていきたいと思います。 お礼申し上げます。