- ベストアンサー
Accessのレポートで2ヵ月後の月を表示させたい
syoriという項目についてこれが2006年7月の場合、 「2006年7月~9月分」と表示させたいと考えています。 以下のように書いてみましたがうまくいきません。 =Format([syori],"gggee\年mm""月~""mm""+2月分""") 単純に2ヶ月を足すだけで、年代わりは考慮しません。 宜しくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
s_husky です。 年が変わる場合は先の回答。 次は、質問に直接的に答えたつもり(?)の回答。 Private Sub コマンド0_Click() Dim dteHiduke As Date dteHiduke = "2006/07/01" MsgBox Format(dteHiduke, "yyyy年mm月~" & Format(Month(dteHiduke) + 2, "00分")) End Sub
その他の回答 (4)
おー、mmは書式も規定している表現ですからね。変数として扱うなってことですか。 2番目のところは 数値を文字列に変換する関数(当月を呼び出す関数()+2) のように書かなくてはいけないということですね。 関数調べて試してみてください。
>単純に2ヶ月を足すだけで、年代わりは考慮しません。 4半期の処理だからですね。 >=Format([syori],"gggee\年mm""月~""mm""+2月分""") の「+2月分」というのは文字列ですね。 =Format([syori],"gggee\年mm""月~""mm+2""月分""") かな?
補足
ありがとうございます。 試してみたのですが、Accessの自動修正が働いて、「+2」の部分が固定文字列として元に戻ってしまうのです。つまり、下の式で入れても上の式に戻ってしまうのです。
s_husky です。 蛇足ですが、 GetDate(dteHiduke, 1, 1)・・・・翌月の1日。 GetDate(dteHiduke, 2, 1)・・・・翌々月の1日。 GetDate(dteHiduke, 1, 99)・・・・翌月の末日。 GetDate(dteHiduke, 2, 99)・・・・翌々月の末日。 GetDate(dteHiduke, -1, 1)・・・・前月の1日。 GetDate(dteHiduke, -2, 1)・・・・前々月の1日。 GetDate(dteHiduke, 0, 99)・・・・当月の末日。 です。
色んなやり方があるでしょうが、私は、全て GetDate関数のみで済ませています。 Private Sub コマンド1_Click() Dim dteHiduke As Date dteHiduke = "2006/06/01" MsgBox Format(dteHiduke, "yyyy年mm月~" & Format(GetDate(dteHiduke, 1, 1), "mm月分")) End Sub Public Function GetDate(ByVal Now As Date, _ ByVal Move As Integer, _ ByVal Hiduke As Integer) As Date GetDate = DateSerial(DatePart("yyyy", Now), _ DatePart("m", Now) + Move - (Hiduke = 99), _ Hiduke * Abs(Hiduke <> 99)) End Function
補足
ありがとうございます。 便利そうな関数ですが、今回はレポートの部分だけで完結できる方法が希望です。
お礼
ありがとうございます。 =Format([syori],"yyyy年mm月~" & Format(Month([syori])+2,"00""月分""")) で、求めるものができました。 助かりました。