宣言

変数の宣言
変数は、
Dim 変数名 As データ型
というように宣言する。
意味はだいたい、
・これからプログラム中で「変数名」という変数を使いますよ〜
・「変数名」という変数領域をメモリに確保しますよ〜
・メモリに確保する大きさは、「データ型」で指定した大きさですよ〜
という感じ。
ここで、「変数名」は変数の名前付け基準に従って任意に勝手な名前を付けることができます。 また、As データ型は省略することができます。 省略した場合は、Variant(バリアント型)という型で宣言されたことになります。 Variantに関する詳しい説明はデータ型表をご覧下さい。
変数の宣言に関し、
  開発環境設定
重要な内容が書かれているので、参照するようにしましょう。
データ型表
データ型 表現できる値 確保される
メモリ領域
備考
Byte 0〜255
(正の整数値)
8bit
(1byte)
唯一、Cで言うところのUnsigned(符号無し)の8ビット変数と同じ扱いが可能なデータ型です。 逆に、Cで言うところのSigned(符号有り)の8ビット変数はVBには存在しません。
以下は宣言の例です
Dim bytHogeHoge As Byte
Boolean
(ブール型)
-1もしくは0
(TrueもしくはFalse)
16bit
(2byte)
2種類の値、真または偽のどちらかをメモリ領域に確保するデータ型。
プログラムでは通常、真はTrue、偽はFalseと書きます。
もちろん、真を-1、偽を0と書くこともできます。
ここで、注意です。
実は、ブール型はメモリに2ビット(符号ビット(+/-)+情報ビット(0/1))の領域を確保するわけではありません。
何と、16bitもの領域を確保してしまいます。 てっきり、メモリを節約すると勘違いしてしまいそうですね〜。 メモリを圧迫するほどの大量のブール型を使うときは、バイト型にしたほうがメモリ節約になります。 ちなみにバイト型をブール型の代用として使うときは、 正の整数値しか表せないことを考慮して、真は1、偽は0などと、自分で決めて使います。 だからといって、ブール型を使用しないのはナンセンスです。 ブール型を使用できるところは使用した方がよいと思います。 というのは、現在のパソコンでは広大なメモリとハードディスクを搭載しているからです。 相当膨大な数のブール型を使用しない限り、メモリ領域確保でメモリが圧迫されるということは有り得ません。 その上、ブール型を使うことによって、VBの強力なプログラム入力支援機能が働き、 打ち間違いのバグを防ぐという、VB開発環境の最大の恩恵を受けることが出来ます。。 例えば、以下のような変数を宣言してみましょう。
Dim blnHogeHoge As boolean
そしてプログラムを書きます。
blnHogeHoge = True
実際に入力してみると分かるのですが、「=」を押した時点でVBの入力支援機能が働き、 「True」と「False」がドロップダウンリストとして表示されます。 あとはカーソルキーで、「True」にカーソルを持っていき、スペースキーで決定するだけです。 これにより、つづりの間違いを防いだり、入力を高速化することができます。
Integer
(整数型)
-32,768
〜32,767
(正/負の整数値)
16bit
(2byte)
Cとは違い、Unsignedの指定はできない。
また、As Integerを省略して型宣言文字(%)を使用することもできる。 省略の仕方は以下の通り。以下の二つは同じ意味を表します。
(1)Dim intHogeHoge As Integer
(2)Dim intHogeHoge%
長整数型
(Long)
-2,147,483,648
〜2,147,483,647
(正/負の整数値)
32bit
(4byte)
Cとは違い、Unsignedの指定はできない。
また、As Longを省略して型宣言文字(&)を使用することもできる。 省略の仕方は以下の通り。以下の二つは同じ意味を表します。
(1)Dim lngHogeHoge As Long
(2)Dim lngHogeHoge&
Currency
(通貨型)
-922,337,203,685,477.5808
〜922,337,203,685,477.5807
  特に正確さが重要な金額を含む計算および固定小数点数演算を行う。
Cとは違い、Unsignedの指定はできない。
また、As Currencyを省略して型宣言文字(@)を使用することもできる。 省略の仕方は以下の通り。以下の二つは同じ意味を表します。
(1)Dim curHogeHoge As Currency
(2)Dim curHogeHoge@
Single
(単精度浮動
小数点数型)
-3.402823E38
〜-1.401298E-45
(負の値)
32bit
(4byte)
Cとは違い、Unsignedの指定はできない。
浮動小数点数として単精度浮動小数点数の変数を格納するデータ型。
また、As Singleを省略して型宣言文字(!)を使用することもできる。 省略の仕方は以下の通り。以下の二つは同じ意味を表します。
(1)Dim sngHogeHoge As Single
(2)Dim sngHogeHoge!
1.401298E-45
〜3.402823E38
(正の値)
Double
(倍精度浮動
小数点数型)
-1.79769313486232E308

-4.94065645841247E-324
(負の値)
64bit
(8byte)
Cとは違い、Unsignedの指定はできない。
浮動小数点数として倍精度浮動小数点数の変数を格納するデータ型。
また、As Doubleを省略して型宣言文字(#)を使用することもできる。 省略の仕方は以下の通り。以下の二つは同じ意味を表します。
(1)Dim dblHogeHoge As Double
(2)Dim dblHogeHoge#
4.94065645841247E-324

1.79769313486232E308
(正の値)
Date
(日付型)
日付と時刻 64bit
(8byte)
実数部が日付、小数部が時刻を示す。
日付は1899年12月30日の午前零時がゼロで、1日ごとに1増加します。
以下に例を示す。
(1) 0.00 = 1899年12月30日午前零時
(2) 2.00 = 1900年 1月 1日午前零時
(3) 5.00 = 1900年 1月 4日午前零時
(4) 5.25 = 1900年 1月 4日午前 6時
(5) 5.50 = 1900年 1月 4日正午
(6) 5.875 =1900年 1月 4日午後 9時
(8) -1.00 =1899年12月29日午前零時
(9) -12.00=1899年12月18日午前零時
(10)-12.25=1899年12月18日午前 6時
(11)-12.50=1899年12月18日正午
(12)-12.75=1899年12月18日午後 6時
(13)-11.00=1899年12月19日午前零時
String
(可変長
文字列型)
可変長文字列 Max約2GB
(20億文字)
・数値ではなく文字自体を表す。
・複数の文字列を格納可能。
・文字列として扱われる数値を格納可能。
・文字、スペースおよび句読点などを混在して格納可能
・Cでは文字は一文字毎に配列に格納すると考えるが、VBでは文字列の固まりで扱う。
例:Cの場合
moji[0] = 'O';
moji[1] = 'k';
moji[2] = 'a';
moji[3] = 'y';
moji[4] = 'a';
moji[5] = 'n';
例:VBの場合(配列の一つの要素に複数の文字を代入することができる)
moji(0) = "Okayan"
moji(1) = "Hoge"
moji(2) = "a"
moji(3) = "bcd"
moji(4) = "efg"
moji(5) = "hij"
また、As Stringを省略して型宣言文字($)を使用することもできる。
省略の仕方は以下の通り。以下の二つは同じ意味を表します。
(1)Dim strHogeHoge As String
(2)Dim strHogeHoge$
以下は固定長文字列型の例(10byte固定の例)です。
Dim strHogeHoge As String * 10
以下の二つは要素0〜9までの配列宣言例です。どちらでもかまいません。
(1)Dim strHogeHoge(9) As String
(2)Dim strHogeHoge(0 to 9) As String
String
* length
(固定長
文字列型)
lengthで指定した長さの
固定長文字列
Max63KB
Object
(オブジェクト型)
オブジェクトへの
参照を表す
64bit
(8byte)
Object(オブジェクト型)の変数には、オブジェクトを参照するためのアドレスが格納される。
Setステートメントを使用してオブジェクトへの参照を代入することができる。
Variant
(バリアント型)
条件による 条件による Dim宣言で明示的にデータ型を宣言しない場合、Variantで宣言されたことと同じになる。 つまり、以下の宣言は同じ宣言であると見なされます。
(1)Dim vntHogeHoge As Variant
(2)Dim vntHogeHoge
Variantが宣言された時点では変数に対してメモリを確保しません。 変数が初めに使用されたときに、用途に適したサイズのメモリが割り当てられます。 以下ではVariantで宣言した変数にLong値を代入する具体的な例を挙げて説明します。
(1)宣言を行います。この時点ではメモリは確保されません。
Dim vntHogeHoge As Variant
(2)別の変数でLong型を宣言します。
Dim lngTmp As Long
(3)Long型の変数に1を入れます。
lngTmp = 1
(4)Long型の変数をVariant型の変数に代入します。
vntHogeHoge = lngTmp
この時点で、vntHogeHogeはLong型のメモリを確保します。
Variant型は以下のような型のデータを取り扱うことができる特別なデータ型です。
・数値および文字列の基本的なデータ型
・日付
・ユーザー定義型
・Empty値
・Null値
・エラー値
・etc.
Variant型に数値を格納する場合、16byteのメモリが確保されます。
Variant型に文字列を格納する場合、文字列の長さ+22byteのメモリが確保されます。
Variant型がどのような型として取り扱われているかを調べるにはVarType関数を用います。
ユーザー定義型 条件による 条件による Typeステートメントで定義されたデータ型。
1つ以上の任意のデータ型の要素または配列を格納することが可能。
ユーザー定義型やその他のデータ型を要素とする配列は、Dimステートメントを使って作成する。
[TopPageに戻る]