変数 とは、プログラムで扱われる数値や文字列などの値を一時的に記憶しておく領域のことです。変数を識別するために、ひとつひとつの変数に固有の名前を付けておきます。これを 変数名 といいます。

変数の宣言

変数を使用する前に、どのような変数を使用するか、その変数名や変数に記憶できるデータ型を明らかにしておくことを 変数の宣言 といいます。

Visual Basic では、変数の宣言は省略することができます。

データ型を指定して変数の宣言を行った場合、異なる型の値を変数に代入することはできなくなります。柔軟性は無くなりますが、チェックが厳密になるため、意図せぬ誤りを防ぐことが可能になります。

Visual Basic で変数の宣言を行うには、 Dim 文を使用します。

Dim 変数名

データ型を指定して変数の宣言を行うには、As句を指定します。

Dim 変数名 As データ型

Visual Basicのデータ型を次に示します。

Visual Basicのデータ型
意味 値の範囲
Boolean ブール型 True または False
Integer 16ビット符号つき整数型 -32,768 - 32,767
Long 32ビット符号つき整数型 -2,147,483,648 - 2,147,483,647
Currency 64ビット整数型
Single 単精度浮動小数 ±3.40282347E+38 - ±1.40239846E-45
Double 倍精度浮動小数 ±1.79769313486231570E+308 -
±4.94065645841246544E-324
String 文字列型
Date 日付型 西暦100年1月1日 0:00:00 -
西暦9999年12月31日 23:59:59
Object オブジェクト型
Variant バリアント型

変数に値を代入

変数に値を記憶させることを代入といいます。Visual Basic で変数に値を代入する書式を次に示します。

変数名 = 

データ型を指定して変数の宣言を行った場合、異なる型の値を変数に代入することはできなくなります。柔軟性は無くなりますが、チェックが厳密になるため、意図せぬ誤りを防ぐことが可能になります。

Visual Basic .NET (VB.NET)からは、演算と代入を一度に行う複合代入演算子を使用できる。Visual Basic 6.0までやVisual Basic for Applications (VBA)では複合代入演算子は使えない。

代入
代入 説明 VB6 VB.NET VBA
var = expr exprの値をvarで指定した変数に代入する。
var += expr var = var + expr と同じ
var -= expr var = var - expr と同じ
var *= expr var = var * expr と同じ
var /= expr var = var / expr と同じ
var ^= expr var = var ^ expr と同じ
var << expr var = var << expr と同じ
var << expr var = var >> expr と同じ
var &= expr var = var & expr と同じ

配列

複数の値を保持する変数として配列を使用することができる。配列を宣言するときは、添え字の最大値を指定する。

Dim variable-name(number) As variable-type

配列に値を代入するときは、添え字を指定する。

Dim intArray(2) As Integer
Dim strArray(2) As String

intArray(0) = 0
intArray(1) = 1
intArray(2) = 2
strArray(0) = "first"
strArray(1) = "second"
strArray(2) = "third"

配列の宣言と同時に初期値を代入することもできる。

Dim intArray(2) As Integer = { 0, 1, 2 }
Dim strArray(2) As String = { "first", "second", "third" }

すべての変数を明示的に宣言するように設定

Option Explicit ステートメントを使って、すべての変数を明示的に宣言するように設定することもできます。宣言されていない変数を使うと、実行時またはコンパイル時にエラーが発生します。

Option Explicit

すべての変数を明示的に宣言するように設定することで、意図しない誤りを自動的に検出することができます。

たとえば、次のようなVisual Basicのプログラムがあったとします。

DestCellName = "Cell1"
SrcCellName = DstCellName

変数SrcCellNameに変数DestCellNameの値を代入しようとして、変数名を間違えてDstCellNameとしてしまいました。この場合、プログラムの実行時やコンパイル時にエラーとなりません。これは、DestCellNameとは別の変数DstCellNameと解釈されるからです。

Option Explicit ステートメントを使って、すべての変数を明示的に宣言するように設定すると、次のようなプログラムになります。

Option Explicit

Dim DestCellName As String
Dim SrcCellName As String

DestCellName = "Cell1"
SrcCellName = DstCellName

DstCellNameという名前の変数は宣言されていないので、プログラムを実行またはコンパイルしたときにエラーとなります。エラー発生時に該当する行が指摘されるので、誤りを発見しやすくなります。

ステートメントを複数の行に分けて記述する場合は、行末にアンダースコア(_)を付ける。

Dim str As String

str = "Hello, " _
& "world!"