<HOME  <お願い事項  <Access2000 TOP   <Access97 TOP   <サイト内検索
  Ac2002--VBAの沼 > 「値の代入」の練習
   1 2 3 4



「値の代入」の練習_2

じゃ、次に、今日の日付が出るようにしてみましょうか。

今日の日付(お使いの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の中を入力しなおして、再度コマンドボタンを押しましょう。

もし、「デバッグ」という方のボタンをクリックした場合は、下のように黄色くなると思います。

黄色くなっているところがエラーの起きている箇所、という印なんですが、とりあえず今日のところは、リセットボタンをクリックして終了させてください。
この辺の操作については、また後ほどお話してまいりますので、今日のところはこの辺で・・・。