Microsoft Access Club >VBA物語 >このページ >次頁 < 前項  サイト内検索


変数の定義_その1:VBA物語10



バグ取り、という言葉を聞いたことありますか?何万行のバグ取りを行う、なんて台詞を吐く場面にちょくちょく出会ったりします。バグとは不具合のことです。前回ご紹介したプログラミングやコンパイルのエラーなどと共に相性が合わない部分を修正することを云います。最後の仕上げですよね。

変数の定義

今回は、変数の定義についてお話したいと思います。

下記のプロシージャーをご覧下さい。このプロシージャはInputBoxステートメントを用いて、ユーザーに希望の数値を入力させ、その戻り値(入力値)で条件分岐を行 います。

動作確認
  1. このプロシージャを実行すると下記のようなダイアログが表示されます。

  1. 12を入力します。
  2. Modメソッドを用いて奇数、偶数を判断します。
  3. 以下のメッセージが表示されます。

プロシージャの欠点

このプロシージャには大きな欠点があります。見慣れている方なら直ぐにでも指摘できるんですが・・・。では、2つ程挙げてみましょう。

  1. 100000を入力します。
  2. 空白のまま、[OK]ボタンをクリックします。
Aの場合

エラーが発生します。

原因は、InputBox関数の戻り値を Integer型 と定義しているからです。Integer型の変数が取り扱える数値の範囲は、-32,768 〜 32,767です。

この場合、100000の数値を入力する必要があるときは、Long型と定義します。このように変数を定義するときには、データ型をしっかり頭に入れて 決める必要があります。

データ型の一覧
データ型 記憶領域のサイズ 範囲
バイト型 (Byte) 1 バイト 0 〜 255の整数
整数型 (Integer) 2 バイト -32,768 〜 32,767
長整数型 (Long) 4 バイト -2,147,483,648 〜 2,147,483,647
単精度浮動小数点数型
(Single)
4 バイト -3.402823E38 〜 -1.401298E-45
(負の値)。
1.401298E-45 〜 3.402823E38 (正の値)。
倍精度浮動小数点数型
(Double)
8 バイト -1.79769313486231E308 〜 -4.94065645841247E-324 (負の値)。

4.94065645841247E-324 〜 1.79769313486232E308 (正の値)。

バリアント型 (Variant) (数値) 16 バイト 倍精度浮動小数点数型の範囲と同じ。
データ型の互換性

データ型の取り扱える範囲は、Byte型 < Integer型 < Long型   という流れになります。つまり、Byte型のデータは、Integer型及びLong型データと互換性があります。Integer型データは、Long型とはありますが 、Byte型とはありません。なお、条件さえ合えば逆も可能ですが…。

※「範囲の広いデータ型を定義づけしておけば問題ないのじゃないの?」と皆さんお考えでしょうね。そのように思うのが普通です。でも、普通じゃないのがプログラミングの世界だと思って下さい。世間の常識が通用しないこともあります。

Variany型

本当のところ、今回のデータ型定義で、万能型と呼ばれるVariant型を全ての変数定義に用いれば、何も問題が起こらないんです。しかし、Variant型を用いる際に注意点が若干あります。

Variant型は取り扱える範囲が広い分、記憶領域サイズが大きくなることです。記憶領域サイズが大きくなれば、 以下の問題点が挙げられます。

  1. ファイル容量が増加する。
  2. メモリ領域を占める割合が大きくなる。
  3. 処理スピードが低下する。

プログラマーは、適切な領域を使用する、システムを安定させる、レスポンスの向上を図る使命がありますから、 むやみやたらにVariant型を用いません。

しかし、素人ユーザーが自分のためだけに使用するAccessファイルではさほど問題になりません。よって、最初のVBAファイルぐらい、全 てにVariant型を使うことを行っても、問題ないと思います。向上心のある方は、データ型を勉強し直し、適切な使用を心がけるようになるからです。

Variant型 : 定数、変数、または引数を宣言する時、データ型を指定しないと、バリアント型 (Variant) が自動的に設定されます。

バリアント型 (Variant) として宣言した変数には、文字列、日付、時間、ブール値、または数値を格納することができます。そして、変数を代入する時など、それらの値は自動的に適切なデータ型に変換されます。

変数とは

変数とは、プログラミング中に一時的に値を保持するものです。今はこのように覚えて下さい。

a=1、b=1
aとbを足すと、3になる

などと、解説書にありますが、実際このような変数の使い方は意味がないです。変数は値を一時的に保持するものだと覚えましょう。

変数の定義

変数を定義するには、Dimステートメントを接頭語として以下のような構文で行います。下記の場合は、変数intAをInteger型と定義しています。

Dim  intA  As  Integer
1 2 3 4
Dim intA As Integer
  1. Dim は変数を定義(明示的に記述する)するステートメントです。
  2. IntAは変数名です。Accessが定めている予約語(Form等) 以外の名称にします。
  3. Asはキーワードとして イコール(=) 的な働きをします。
  4. データ型を宣言します。

この構文は皆さんが1番最初におぼえなければ行けないことです。全てここから出発していきます。

関連ページ

2001/10/07

ページの先頭へ 前ページへ戻る


変数の定義_その1:VBA物語10


 

-Microsoft Access Club-