<HOME  <お願い事項   <Access2002 TOP   <Access97 TOP   <サイト内検索
 MS-Access2000--VBAの小屋>例外と戦う
   1 2 3 4 5 6



むむむ・・・よくわかんないんで、Nengetsuもテキストボックスに出してみましょう。

ええと、今、2000年の10月ですんで、1999年4月1日から考えると、18ヶ月経過していることになるわけですね。

これを12で割った答えは・・・1.5。ああ。。。四捨五入されちゃってるんですね。おそらく。

変数NenがInteger(整数型)の変数なので、ココに代入するときに、小数点以下の値を丸めてくれてるみたいです。
だから、まだ2年たってないのに、2年6ヶ月になっちゃうんですね。

うーむ、24ヶ月目を過ぎるまで、「2年」じゃないんですよね。。。うーんと・・・。
四捨五入しないで、ぜんぶ「切り捨て」にすれば、問題解決、かな。どうでしょう。

切り捨てをするための関数は、IntかFixです。正数部分だけならどっちも同じですが、負の数が含まれるような計算の場合は違いが出ます。詳しくはヘルプを紐解いてみてください。
こんな感じかな・・・。いろいろ難しいですね。

では、あとは、体裁よく、○年△ヶ月と表示されるように整えます。
コツは、「変数はそのまま、年とヶ月はダブルコーテーションで囲む」です。年とかヶ月なんて書かれても、VBAには何のことだかわかりませんからね。「こいつはそのまんま出してくれればいい」という意味をこめて、ダブルコーテーションで囲みます。
そうすると、Nenと”年”とGetsuと”ヶ月”と、4つのパーツに分かれることになります。
なので、これを、&で結びます。これがポイントですね。
Nen ”年” Getsu ”ヶ月”って、そのまんま並べてもだめなんですよ。
それぞれ、&で結んでやるわけです。

あ、行間は空けなくてもよいですよ。


改めて確かめてみると・・・。
18ヶ月経過しているので、1年と6ヶ月・・・。って、なりますか?

これで大丈夫だと思うんだけどな・・・。出ます???とりあえず動きそうですね。

ああ・・。
これってかっこ悪いっすかねぇ↓0年とか、0ヶ月とか出ちゃうのって・・・。

別に差し支えない、という方は、先に進んでください。別に間違いじゃないですもんね。
0年のときは、「△ヶ月」だけ表示させて、0ヶ月のときは「○年」だけ表示させて、それ以外のときは今さっき作った「○年△ヶ月」を表示させるようにしましょうか???
どうするか、っていうと、うーん、意外に難しいかも。

ええと、If文をふたつ作ればいいのかな???判断する要素が、Nenが0の場合と、Getsuが0の場合と、2つ存在しますから、SelectCaseではかえってややこしいことになっちゃいそうです。Nenが0のときと1のとき、っていう条件判断だったら、SelectCaseを使いますけど・・・。

さーややっこしいですよ。

まず、Nenがゼロだった場合を考えて・・・。↑

んでもって、Nenがゼロじゃなくても、Getsuがゼロだったらどうするか、↑ということは・・・。
ややっこしいですねー。
でも、よく観察してみてくださいね。

Me!テキスト3 = Nen & "年" & Getsu & "ヶ月" は、Nenがゼロ以外の場合でも、Getsuがゼロ以外の場合でも、どっちでもひっかかってくるんで、両方のIF文の「Else」のところにかかるような位置に書かないといけないんです。

と、こんな感じで、ゼロの場合は、出しません。



とりあえず第一段階終了・・・。フォームを閉じて、一息ついてください。