PRIMG0001
 毎週金曜日、プログラミングのちょっとした講座を記しています。
 前回は演算子について記載していきました。今回はプログラムを作るとき非常に重要になる「変数」について記載していきます。
「変数」とは、値を一時的に保存していくための入れ物です。計算の途中の値を一時的に保存したりするのに使います。
BAKA

 もっと詳しく説明しましょう。まず、一番最初にコンピュータは「バカ」、「忘れっぽい」、「鳥の頭」などといったことを記載したことを覚えていますでしょうか?コンピュータは「バカ」なため、処理したもの(値など)を入れておく「入れ物」を与えておかなければなりません。そうしないと、コンピュータは処理したもをどこに置いたか忘れてしまい、なくします。その入れ物が「変数」なのです。
 つまり、コンピュータに値を入れておく「入れ物」をいっぱい与えてやらなければいけないのです。しかもその入れ物に、きちんと入れておくものの「きまり」も作ってやらなければなりません。

TANSU
 いわゆる箪笥の引き出しにラベルシートで「これを入れておく」といったラベルを貼って管理しておくといったイメージとなります。
 
 プログラム上で「変数」とは何なのか?どういう記述になっているか?いったところに進みます。
 プログラム上で「変数」はプログラムの命令とダブらない任意の文字列になります。この任意の文字列は分かりやすい物を使います。例えば「HENSU01」とか「IREMONO1」とかプログラムを作成する人が好き勝手につけています。

 変数は名前を勝手につけることができるので簡単なように思えますが、ここでちょっと難しくなるのが、その変数に「これを入れておく」といったラベルを貼るところです。この「ラベル」というのは、どういったデータの種類を入れておくか?ということです。

 例えば、「1」というデータ、この「1」を「数字」と見るか、文字と見るかによって違ってきます。また、数字だと思っていても、「1」を整数と見るか、精密に小数点まで表記させる「1.00」と見るか、はたまた、通貨の「1円」と見るかさまざまな見方があります。データの使い方によって変数にそのデータの種類を指定してやらなければなりません。

データ型VBA表記値の範囲
文字列型String文字列
ブール型BooleanTrue または False
バイト型Byte0から255の正の整数
整数型Integer-32,768から32,767の整数
長整数型Long-2,147,483,648から2,147,483,647の整数
単精度浮動小数点型Single-3.40282×10の38乗~3.40282×10の38
倍精度浮動小数点型Double-1.79769×10の308乗~1.79769×10の308
通貨型Currency-922,337,203,685,477.5808から922,337,203,685,477.5807
日付型Date西暦100年1月1日から西暦9999年12月31日 (日付と時刻)
オブジェクト型Objectオブジェクト参照するデータ型
バリアントVariantなんでも良い

 この表を見ておやっ?と思った人も多いと思います。一番下に「バリアント型、なんでも良い」と書いているので、これを最初から使って他は覚えなくてもいいのでは?と思ってしまいますが、バリアント型の多用はダメです。このバリアントは「奥の手」だと思ってください。このおバカさんのコンピュータに最初から楽なものを与えてはダメです。どうしようもなくなった時に奥の手としてこの「バリアント型」を使います。通常はこのバリアント型以外のデータ型で指定します。
DAISYOU

 もう一つ気になるのが、整数型で普通の整数型と長整数型があるということで、最初から長整数型を使ったらいいじゃないか?、「大は小を兼ねる」と同じだから大きい方がいいに決まっているということですが、これは理屈上は合っています。同じように浮動小数点型でも「単精度浮動小数点型」と「倍精度浮動小数点型」があるから、最初から「倍精度浮動小数点型」を使えばいいのでは?ということで、これも理屈上は合っています。最初から「長整数型」「倍精度浮動小数点型」を使えば楽です。
 しかし、なぜこのように長い方、短い方といった「型」が存在するかと言いますと、プログラムが膨大になったときに大きな問題となるのが、「パフォーマンスの問題」です。皆さんもよく経験すると思いますが、大きなプログラムを使用するときに、「もっさり感」がでた場合、「あ~重たいプログラムだな~メモリを大きく食っているだろうな~」と思うでしょう。型が大きなものを使用すると、パフォーマンスにも影響してきます。

 例えば、「1から10までカウントしていく」といったことをやる場合、「長整数型」を使うと、領域の無駄になります。無駄な領域が増えれば増えるほど全体のプログラムのパフォーマンスが低下していき、プログラムが使うメモリの量も増えていくのです。

 あと、「オブジェクト型」とは何ぞや?と思っている人がいると思います。「オブジェクトを参照するデータ?」なんだそれ?というかもしれません。簡単にいうと「オブジェクト」=「他のプログラム等」と思ってください。「等」というのがついた訳は「プログラム以外」も使用することもあるからです。VBAでは「ワークブック、ワークシート、セル、図形、グラフ、インターネットエクスプローラ」もこの「オブジェクト」になります。つまり、プログラムの中以外のアプリケーションやエクセルのデータなど「外部のもの」を一時的にプログラム上に合体させて使用する場合に使用します。
NURIKABE

 今回、この「変数」についてちょっとしつこく説明しました。他のプログラムの講座だとこの変数などの説明をサラッと流し、「早速プログラムを作ってみましょう~」「ほら簡単にできました~」といった感じですが、なぜ、ここでは先週と今週プログラムを組ませずこのようなことばかり説明しているかと言いますと、プログラムを組み始めるときに、このようなことが分からなければ最初から大きな「壁」にぶち当たってしまい、混乱してしまうからです。現在のコンピュータ関連の授業はよく分かりませんが、昔のコンピュータ専門の授業のとき(それこそオフコンがメインの時代でした。)はまずはこれらを覚えよ!といった感じで、これらを覚えることによって、後のプログラムを組むときに少しずつ覚えていくプログラムの「命令」の使い方に集中できることができました。
 前回の算術演算子と今回の変数についてはぜひ理解してください。来週からいよいよ少しずつプログラムの本題に入っていきます。それではまた来週!