Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5100 / 9994 ←次へ | 前へ→

【8125】Re:期間の計算について
回答  飛ばない豚  - 06/7/3(月) 11:30 -

引用なし
パスワード
   ▼初心者 さん:

私の使っているコード(ちょっと改)です。
'---------------------------------------------------------------
Function fxKIKANcalc(ByVal 日付S As Date, ByVal 日付E As Date) As String
  Dim myDateS As Date   '開始年月日
  Dim myDateE As Date   '終了年月日
  Dim myFUGO As String  '日付S>日付Eの場合、計算結果にマイナスを付ける
  Dim myYY As Long    '年数
  Dim myMM As Long    '月数
  Dim myDD As Long    '日数
  Dim myYYs As Long    '開始年
  Dim myMMs As Long    '開始月
  Dim myDDs As Long    '開始日
  Dim myYYe As Long    '終了年
  Dim myMMe As Long    '終了月
  Dim myDDe As Long    '終了日
  
  If 日付S < 日付E Then
    myFUGO = ""
    myDateS = 日付S
    myDateE = 日付E + 1
  Else
    myFUGO = "-"
    myDateS = 日付E
    myDateE = 日付S + 1
  End If
  
  myYYs = Year(myDateS)
  myMMs = Month(myDateS)
  myDDs = Day(myDateS)
  myYYe = Year(myDateE)
  myMMe = Month(myDateE)
  myDDe = Day(myDateE)
  
  myDD = myDDe - myDDs
  If myDD < 0 Then
    myDDs = Day(DateAdd("m", myYYe * 12 + myMMe - _
        (myYYs * 12 + myMMs) - 1, myDateS))
    myDD = myDDe - myDDs + Day(DateSerial(myYYe, myMMe, 0))
    myMMe = myMMe - 1
  End If
  
  myMM = myMMe - myMMs
  If myMM < 0 Then
    myMM = myMM + 12
    myYYe = myYYe - 1
  End If
  
  myYY = myYYe - myYYs
  
  '表示形式を整える
  fxKIKANcalc = myFUGO & myYY & "年" & myMM & "ヶ月" & myDD & "日"
End Function
'-------------------------------------------------------------
'注)同じ20日〜15日でも、月によって日数は違ってくる。
'例1 2003/01/20〜2004/03/15 → 01年01ヶ月25日
'例2 2003/01/20〜2004/04/15 → 01年02ヶ月27日


標準モジュールに上記コードを貼り付けて、
クエリー等から
式:fxKIKANcalc("2006/04/01","2007/05/31")
というように使用します。

参考までに。
296 hits

【8115】期間の計算について 初心者 06/6/30(金) 23:45 質問
【8117】Re:期間の計算について 飛ばない豚 06/7/1(土) 13:05 発言
【8120】Re:期間の計算について 初心者 06/7/1(土) 23:14 質問
【8125】Re:期間の計算について 飛ばない豚 06/7/3(月) 11:30 回答
【8168】Re:期間の計算について 初心者 06/7/4(火) 22:38 お礼

5100 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078227
(SS)C-BOARD v3.8 is Free