2010年問題
プログラムで一回失敗したことを
忘れないようにブログに残すことにしておきます
去年のなつごろにですね
お客さんにエクセルのマクロを組んで納めたんですよ
ほとんどボランティアで
どんなプログラムかというと
台帳を
読ませれば
月報、日報、週報を自動的に出力するような
逆にいままでよくあのデータ量を手で計算してたなって思いますが
まあ
それはさておき
年度を表示するのに
システム日付を取得して
1月から3月なら
年度=年 - 1
4月から12月なら
年度=年
って感じにしてたんですけど
としあけそうそうに
そのお客さんから
2010年度って表示されるんですけどっという
クレーム
2010年になったものの今はまだ
2009年度
てか
まさか
そんなミスを自分が
するはずがないと重い
マクロの
ソースをチェック
そしたら
If 4 <= Month(Date) <= 12 Then
N = Year(Date) & "年度" /N(String型)
Else
N = Year(Date) - 1 & "年度"
End If
こんな感じで
IF文できちんと判定をかけてました
そしたら
なぜ
なぜ
1月なら
IF文を抜けて
ELSE文に入るはず
おかしいと思い
ステップで実行させてみると
Dateには2010/01/07が入っている
Monthには当然
1
なのになぜか
IF文を抜けない
なんじゃこりゃwww
調べてみると
IF文の不等式
VBAは
4 <= Month(Date) <= 12
↑
これだめみたいです
コンパイルは通るのに><
なんでだめ??
If 4 <= Month(Date) And Month(Date) <= 12 Then
N = Year(Date) & "年度" /N(String型)
Else
N = Year(Date) - 1 & "年度"
End If
↑
こうしたら
うまくいきましたお
つぎから木をつけまそう