変数 とは、プログラムで扱われる数値や文字列などの値を一時的に記憶しておく領域のことです。変数を識別するために、ひとつひとつの変数に固有の名前を付けておきます。これを 変数名 といいます。
変数を使用する前に、どのような変数を使用するか、その変数名や変数に記憶できるデータ型を明らかにしておくことを 変数の宣言 といいます。
Visual Basic では、変数の宣言は省略することができます。
データ型を指定して変数の宣言を行った場合、異なる型の値を変数に代入することはできなくなります。柔軟性は無くなりますが、チェックが厳密になるため、意図せぬ誤りを防ぐことが可能になります。
Visual Basic で変数の宣言を行うには、
Dim
文を使用します。
Dim 変数名
データ型を指定して変数の宣言を行うには、As句を指定します。
Dim 変数名 As データ型
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)では複合代入演算子は使えない。
代入 | 説明 |
---|---|
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!"
Public Const ROW_MAX As Integer = 100