<HOME <お願い事項 <Access2000 TOP <Access97 TOP <サイト内検索 | ||
Ac2002--VBAの沼 > 「値の代入」の練習 | ||
1 2 3 4 |
じゃ、次に、今日の日付が出るようにしてみましょうか。
今日の日付(お使いのPCに内蔵されているシステム時計が指し示す日)を出す関数っていうのがあるんですよ。Date関数っていう関数です。
けっこう活躍する関数なんで、一度ヘルプで使い方など確認しておいてくださいね。
使い方は、こんな感じ。
カーソルを他の行にでも移すと、カッコが消えて、Dだけ大文字になります。
引数がない関数なんですね。これ。これでオッケーです。
じゃ、コンパイルして、フォームのほうに戻って、フォームビューに切り替えて、コマンドボタンをクリック!
出ます?
じゃあ、今日の日付を、今度は、○年○月○日という書式に変えてみましょうか。
こういう場合は、さらにFormat関数というやつを組み合わせてやるといいかもしれません。
この関数もけっこう使いでがあるので、ヘルプで用法などを確認しておかれるとよいと思います。
書き方としては、
Format(書式の変更をしたいもの,どういう書式にしたいのか)
という書き方になります。
今回は・・・。
「書式の変更をしたいもの」=Date関数で出した今日の日付
「どういう書式にしたいのか」=yとかmとか、書式を表す文字の組み合わせ。ヘルプにいろいろ載っているので必ず確認のこと
こうなります。コードを書き始める前に、整理整頓しておいてくださいね。
例えば、こんな感じかな。
出ます?
じゃ、今度は、「今日の日付」じゃなくて、2002/8/24と出るようにしてみようかな。
なんか妙に間があくなぁ・・・まあいいか。
ぎょっ・・・。
な、なんで・・・
10.4270833333333?????
まず落ち着きましょう。
・掛け算の記号が *(半角のアスタリスク)
・割り算の記号は、/(半角のスラッシュ) なのです。
つまり、これ、2002/8/24じゃなくて、2000÷8÷24だと思われちゃってるわけですね。
日付の場合は、こうしたことが生じないように、#(半角のシャープ)で囲んで入力します。
両側に、#を入力してみてください。半角ですよ。
なんか、年と月と日が入れ替わっちゃったよ・・という方、いらっしゃいます?。
これについてはまた後日お話しますけども、これがいわゆる「2001年問題」と呼ばれていた問題に通じる動作なんです。
とりあえず今日はコレでいいですよ。
こういうふうに、値の「データ型」にあわせた、#マークのような囲み記号のことを、「文字リテラル」と呼びます。
#で囲むことによって、日付時刻型の値であると強く意思表示できるわけなんです。
これも、いろいろ作ってくうちに理解できるようになると思いますんで、最初はとにかく同じように入力してみてください。
出ます?
んでは次に「1ヶ月前」っていうのを出してみましょう。
考え方としては、「1ヶ月引く」(マイナス1ヶ月を足す)という具合になります。
日付や時刻型のデータの足し算引き算の場合は、DateAdd関数っていうのが便利かもしれないです。
これは、日付の足し算をするときに使う関数なんですよ。けっこう活躍する関数じゃないかと思います。
ヘルプを見てみてください。いろんな用法が書いてあります。
1日単位で引いたり足したりしたい場合は D
1ヶ月単位で引いたり足したりしたい場合は m
という具合に、足し引きする単位を、引数部分に指定することができるみたいですね。
先月、ということは、「月」単位で1引くことになるので、
こうなりますね↓。
ここまでくると、VBAというよりは「創意工夫」の世界になりますね。
いくら関数を覚えても、現場で使えなきゃ意味なくなっちゃいます。
DateAdd関数が必要となる日に備えて、引数のところとかいろいろ変えて挑戦してみてください。
日付に関する処理は、工夫次第でいろいろなことができます。
日付専用の関数なんかもたくさんあるので、うまいこと活用していきたいですね。
でも、丸暗記しようなんて思っちゃいけないですよ。わかんなくなったらヘルプ見ればいいんですから・・・。
んじゃ、もう少しひねってみましょうか。
とあるテキストボックスの値を使って、何か別の値を出してみましょう。
テキストボックスをもうひとつ作って、名前を確認しておきましょう。
わたしのは、テキスト4っていう名前のテキストボックスになったみたいです。
え?位置をそろえないのかって?別にいいじゃないですか。今日は練習なんだし。うるさいわねー別にいいじゃないのっ。
じゃあ・・・・日付を入力したら、曜日がわかるようにしてみましょうか。
曜日は、さっきやったFormat関数を使って出すことができます。
引数の部分を aaa または aaaaってやれば、これで「日付の書式を”曜日”にする」っていう意味になるんです。
aaa と aaaa の違い?それはぜひとも、試してみてください。
テキストボックスに日付を入力し、コマンドボタンをクリックすると、曜日が出ます?
ご自分の生年月日とか入れて試してみてください。正しい答えが出るのかな???
じゃあ、そうだな、1日は何秒か、とか、どうですか?
1日は60×60×24で、86400秒なんですけどね。
どっちでもいいですよ。86400って直接入力しといたほうが、式としては見やすいかな・・・。
式の見やすさは下のほうがいいけれど、式の根拠を知らしめるためには、上の式のほうがよさそうな気がするなぁ。
どっちでもいいや。今日は練習ですからね。
テキストボックスに、何か数字を入れてみてください。
何秒になるか、答えが出ると思います。
出た答えを、○○秒、って表示させたいなぁ・・・。
こうすればいいのかな・・・。
ギャー!なんかエラーになった!!!
あっ、そうか、秒っていう文字を、ダブルコーテーションで囲まないとダメなんだな。
じゃあ、こうかな???
やっぱエラーになるじゃん!!なんで???
こういう場合はデスね・・・。
ダブルコーテーションで囲んだ文字と、囲んでない式や数値とを同じ式に並べたい場合は、&で結び付けないとならないんです。
こういう式の書き方も、徐々に慣れてってくださいね。
出ます?
余談ではありますが、テキスト4の方に、数字じゃない文字を入れた状態でコマンドボタンを押すと・・・。
こんなメッセージが出て、処理が止まってしまいます。ヒエーこれはいったいなんなんでしょう???
つまりですね。6a×86400って言われても計算できないのです。aって数字じゃないじゃないですか。
その理由として、「aという文字はテキスト型の値であって、数値型ではないので」計算できないと言っているようですね。
こういうエラーが出たら、とりあえず「終了」ボタンをクリックして、テキスト4の中を入力しなおして、再度コマンドボタンを押しましょう。
もし、「デバッグ」という方のボタンをクリックした場合は、下のように黄色くなると思います。
黄色くなっているところがエラーの起きている箇所、という印なんですが、とりあえず今日のところは、リセットボタンをクリックして終了させてください。
この辺の操作については、また後ほどお話してまいりますので、今日のところはこの辺で・・・。