<HOME <お願い事項 <Access2002 TOP <Access97 TOP <サイト内検索 | ||
MS-Access2000--VBAの小屋>例外と戦う |
むむむ・・・よくわかんないんで、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」のところにかかるような位置に書かないといけないんです。
と、こんな感じで、ゼロの場合は、出しません。
とりあえず第一段階終了・・・。フォームを閉じて、一息ついてください。