サイトについて      連絡先   検索

VBA 変数

はじめに

Excel VBA の変数の使い方を紹介します。

変数は値を入れることができ、いつでもその値を取得できます。

Dim 変数名 As 型名 で変数を宣言できます。わかりやすい変数名を決めるのがプログラマーの悩みどころです。

変数の宣言

Dim が変数を宣言するキーワードです。宣言とは変数の名前と型を決めることです。

Dim 変数名 As 型名のようにして宣言します。

Dim 変数 As String
Dim Tips As Integer

変数に代入

変数に値を入れることを代入するといいます。

変数名 = 値のようにすると代入できます。次のコードを実行すると Tips の値が 10 になります。

Dim Tips As Integer
Tips = 10

変数の値は何度も変更できます。このため「変数」と呼びます

Dim Tips As Integer
Tips = 10
Tips = 20

変数の型

変数には必ず型を指定します。型とは数値型や文字列型など、どのような値かを示すものです。

数値を扱うなら Integer です。Integer は数値専用で文字は代入できません。文字を代入するとエラーになります。

Dim Tips As Integer
Tips = 10       ' 数値なので代入できる
Tips = "あいう" ' 文字なのでエラー

文字を扱いたいときは String を使用します。

Dim Found As String
Found = "あいう"

このように変数に何の値を入れるかによって型を決める必要があります。

変数の初期化

変数の宣言と初期化を一行ではできません。

Dim 変数 As Integer = 10 ' これはできません。

Dim 変数 As Integer
変数 = 10

最近のプログラミング言語では 1 行でできますが、VBA は古いのでそれはできません。

オブジェクトの代入

型の中には Object 型 (参照型) というものがあります。Worksheet や Range などのクラスがそれです。

Set 変数名 = 値のように Set を付ける必要があります。

Dim 変数 As Object
Set 変数 = Range("A1")

Set を忘れると「オブジェクト変数または With ブロック変数が設定されていません。」というエラーが発生するので注意します。

オブジェクト.関数オブジェクト.プロパティのようにするのがオブジェクトの特徴です。そういうものを変数に代入するときは Set を付けるのを忘れないようにします。

変数のスコープ

Sheet1 から標準モジュールや、標準モジュールから Sheet1 など、別のファイルの変数を使用する方法を紹介します。

別の標準モジュールの変数は、変数名だけで使用できます。

別のシートの変数は、ファイル名.変数名のように変数の前にファイル名を記載する必要があります。

Sheet1 のコード

Public publicシート変数 As Integer

Sub 実行サブ()
    publicモジュール変数 = 10         ' 標準モジュールは変数名だけで使用できる
    Module1.publicモジュール変数 = 10 ' ファイル名を付けても使用できる
End Sub

標準モジュール1 のコード

Public publicモジュール変数 As Integer

Sub 実行モジュール()
    Sheet1.publicシート変数 = 10 ' ファイル名を付けると使用できます。
End Sub

別のファイルの変数を使用するにはスコープが Public になっている必要があります。

変数の宣言を強制する

Dim で変数を宣言するといいましたが、実は宣言しなくても使えます。ただし入力ミスで Tips が Tlps になっていても実行されるのでバグの原因になります。

Dim Tips As Integer
Tips = 10
Tlps = 20 ' Tlps になっていても気づかずに実行されてしまう
Tips = 30

VBA の初期設定では変数を宣言しなくても使えます。変数の宣言を強制する方法を紹介します。

変数の宣言を強制するには VBE の「ツール」をクリックして [オプション] をクリックします。

4

[変数の宣言を強制する] をチェックし [OK] をクリックします。

2

この後に新しいコードを表示すると、コードの先頭にOption Explicitが追加されます。この一行があると、このコードで変数の宣言が強制されます。既存のコードに勝手に追加されたりはしないので、そのときは手入力します。

Option Explicitの一行を削除すると強制されなくなります。

3

「Option Explicit」の一行を削除すると強制されなくなり、追加すると強制されます。

強制すると、実行時に宣言していない変数があるとエラーが発生してわかるようになります。

関連ページ