Excel VBAで様々な変数を宣言、初期化、操作する方法は次のとおりです。
普通、プログラミングでは、変数は使用する前に宣言と定義を実行する必要があります。コンピューターに変数を使用することを分かるように宣言を実行します。定義は変数の内容を特定の値として指定することです。 Excel VBAにもこれらの手順があります。次には例を挙げます。
目次
変数の宣言と初期化
Excel VBAの変数宣言では、2つのキーワードDimとAsを使用して、それぞれ変数名とデータ型を指定します。次は整数型の変数xを宣言する例です。
Dim x As Integer
これより変数xが作成されますが、現時点では変数にはデータが何も格納されていません。変数の初期値を設定する場合は、変数を定義する必要があります。変数を定義するための構文は単純で、ただイコール記号を使用します。
x = 5
これより、変数xを5に指定されます。後はこの変数を使えます。
Range("A1").Value = x
次には浮動小数点型の例です。
Dim x As Double
x = 5.5
MsgBox "value is " & x
ブール型:
Dim x As Boolean
x = True
MsgBox "value is " & x
文字列型:
Dim x As String
x = "Florian"
MsgBox "My name is " & x
Excel VBAには様々な変数があります。すべての変数の型を知りたい場合は、MSDNホームページをご覧ください。
バリアント型:
上記で紹介した変数は普通の型であり、VBAの特別なバリアント型変数はデータを格納できます。Variantと呼ばれ、使用方法は他の変数型と似ています。
Dim x As Variant
x = "Florian"
MsgBox "My name is " & x
x = 123
MsgBox "The value is " & x
バリアント型変数に宣言されると、何でも格納できます。
変数を宣言時に型を指定しない場合は、VBAがバリアント型にプリセットされるため、書き方が異なるが、結果は同じです。
Dim x As Variant
Dim x 'は Variantにプリセットされます。
バリアント型の変数は、通常、Excelセルからユーザーが入力したデータを読み取るために使用できます。ユーザーが入力したデータは違うため、任意の型である可能性が高いです。そのため、バリアント型で格納する方がいいです。
Variantはすごく便利ですが、デメリットと言えば、マクロの実行性能はうまくないです。一般的に必要がなければ、固定の変数型を使用してください。
宣言されていない変数
Excel VBAでは、ユーザーが変数宣言を省略できるため、変数を宣言せずに直接定義できます。
MyVar = 35
宣言されていない変数はバリアント型にプリセットされます。
変数を宣言せずに使用できるとすごく便利ですが、変数をはっきり宣言すると、マクロがうまく実行できます。入力ミスを避けるため、プログラムを記述する時に変数宣言をちゃんとしてください。 プログラムの作成時に宣言なしで誤って変数を使用しない、または変数を宣言したが、入力ミスが発生する場合は、コードの先頭に次のコードを追加できます。
Option Explicit ' 変数の宣言を強制する
Sub Hello()
Dim MyVar As Integer
MyVar = 10
MyInt = 10 ' 未宣言
End Sub
これより、変数が未宣言の場合はエラーメッセージが表示されます。
変数の適用範囲
一般的なSubプロシージャで宣言した変数の適用範囲はSubプロシージャに限り、区域変数です。
Sub Hello1()
Dim MyVar As Integer
MyVar = 12
MsgBox MyVar
End Sub
Sub Hello2()
Dim MyVar As Integer
MyVar = 34
MsgBox MyVar
End Sub
変数をモジュール全体のプロシージャで使用する場合は、プロシージャの外部で変数を宣言でき、モジュールレベルの変数を作成します。
Dim MyVar As Integer
Sub Hello1()
MyVar = 12
MsgBox MyVar
End Sub
Sub Hello2()
MsgBox MyVar
End Sub
これより、Hello1を実行した後、Hello2を実行すると、Hello1に設定されているそのMyVar変数の値がHello1に設定されている12です。
プログラムが複雑な場合に、複数のモジュールが存在する可能性があります。通常、モジュールレベルの変数は属するモジュールのみアクセスできます。他のモジュールにもアクセスできるために、変数をパブリック変数(public)として宣言する必要があります。やり方はDimをPublicに変更すればいいです。 例えば、プログラムにModule1とModule2の2つのモジュールがあり、MyVar変数をModule1で宣言し、Module2でも使用できるようにすると、Module1は次のようになります。
Public MyVar As Integer
Sub Hello1()
MyVar = 12
MsgBox MyVar
End Sub
Module2 は:
Sub Hello2()
MsgBox MyVar
End Sub
定数
変数の内容をプログラムの実行中に固定し、誤って変更しないようにするには、この固定変数をConstに追加して、定数を宣言します。次に例を示します。
Const MyInteger As Integer = 42
これより、整数のMyIntegerは定数になり、変更できません。
各種類の変数を定数として宣言することができ、使用方法は似てます。
Const myDate As Date = #2/2/2020#
Const myDay As String = "Sunday"
コメントを残す