本記事はエクセル2019で動作確認を行っています。
必ずご自身でVBAを記述しましょう。
手を動かすことが、習得への近道になります。

本記事を読めば変数の考え方が分かります。
ExcelVBA入門者が最初につまづきやすいポイントが変数です。
理解できないところは何度も見返すようにしましょう。
それでは本題に入ります。
VBAを記述する時、さまざまな場面で数値や文字列を使用します。
この時、直接値を指定することもできますが、値を格納できる「変数(へんすう)」を利用することもできます。
「変数」を使用するとマクロの処理をより便利に行えると理解しておいて下さい。
変数の基本的知識
- 変数には値によってデータの型が異なる。
- 変数はその型を宣言する必要がある。
- 変数は宣言後、値を代入することができる。
です。
一つずつ見ていきましょう。
変数のデータ型
VBAを記述するのに文字列や数値、日付などを使用します。
変数を使用する時、たとえば文字列ならString、日付ならDateという風に型が異なります。
以下が代表的なデータの型です。
データ型 | VBAの書き方 | 値 |
---|---|---|
文字列型 | String | 文字 |
ブール型 | Boolean | TrueまたはFalse |
整数型 | Integer | -32768~32767の整数 |
長整数型 | Long | -2147483648~2147483647の整数 |
日付型 | Date | 日付 |
バリアント型 | Variant | すべての値 |
*Single Double Object などもある。
変数を宣言する。
変数という入れ物に入れたい内容は、その種類により宣言することでエクセルに理解させます。
ここでは、変数の宣言方法と強制的に変数宣言させる方法を解説します。
変数の宣言方法
変数の宣言にはDimステートメントを使用します。
Dim 変数名 As データ型
例
行の値を変数にしたい場合、行の値は数字ですよね。
なので、整数のデータ型であるIntegerを使います。
変数名を「row」という名前にしてみましょう。この場合の記述の仕方は
Dim row As Integer
となります。
これを変数を使う前に宣言するようにします。
また、カンマ(,)で区切ることで、複数の変数を宣言することができます。
Dim 変数名 As データ型 , 変数名 As データ型
注意
Dim 変数名 , 変数名 as データ型
これは最後の変数名のみ指定したデータ型が適用されます。
それ以外はVariant型に自動的になりますので気を付けましょう。
変数の宣言を強制する方法
変数宣言は変数を使用するなら必須になります。
入力ミスを防ぐために「変数の宣言を強制する」方法を知っておきましょう。
VBEを起動>「ツール」>「オプション」>「変数の宣言を強制する」にチェック>「OK」をクリック
これで、標準モジュールのコードウィンドウの最上部に「Option Explicit」の表示がされました。
変数を宣言せずにコードを書くとエラーが表示されるようになったので、記述ミスの防止になります。
変数に値を代入する。
変数に値を代入するには変数名と値を「=」でつなげてあげます。
変数名=代入する値
これは左辺と右辺が等しいわけではなく、左辺に右辺を代入するということなので注意してください。
変数名はExcelVBAに関してはひらがな・漢字も可です。
ただ、自分で使うだけや社内で共通ルールがあるならいいのですが、社外に出たり、他人も使用する可能性があれば英語を使用するほうが無難です。
ここまで読めれば、一度実際に記述してみましょう。
Sub 変数練習() ’変数を宣言 Dim wsName As String ’変数名にアクティブシートの名前を代入 wsName=ActiveSheet.Name ’A1のセルに変数に格納された値を代入 Range("A1").Value=wsName End Sub
A1のセルに今見ているシートの名前が入力されていれば大成功です!
ちなみに解説のためにコメントをたくさん記述しています。
普段は必要なところだけにコメントは使用しましょう。
オブジェクト型変数について
オブジェクトとは、エクセルが操作できる対象のモノを指します。
具体的には、「Worksheet」「Workbook」「Range」などのことです。
オブジェクト型の変数は2点気をつけて記述します。
Dim 変数名 As オブジェクトの種類
(例)Dim ws As Worksheet
のように記述します。
オブジェクト型変数にオブジェクトを格納するには、Setステートメントを使用します。
Set 変数名=格納するオブジェクト
(例)Set sh=Worksheets(”sheet2”)
ここでも、実際に記述してみましょう。
問題
エクセルの新規ブックを開き、シートを追加して「sheet2」を作っておきましょう。
「sheet1」から下記のマクロを実行してみて下さい。
Sub 変数練習2() Dim sh As Worksheet Set sh=Worksheets(“sheet2”) sh.Activate End Sub
Sheet1からSheet2に移動しましたか?
変数の適用範囲
変数は記述する位置で、適用範囲がかわります。
①プロシージャレベル:プロシージャ内で宣言した変数は、プロシージャ内のみ。その後破棄。
②モジュールレベル:モジュールシートの最初に宣言した変数は、モジュール内で適用。その後破棄。
③すべてのモジュールのプロシージャレベル:Public 変数 As データ型 と宣言するとすべてに適用。
まとめ:変数は慣れれば怖くない!
- 変数には値によってデータの型が異なる。
- 変数はその型を宣言する必要がある。
- 変数は宣言後、値を代入することができる。
- オブジェクト型変数の使い方。
- 変数の適用範囲
について見てきました。
変数はExcelVBAには必須の知識です。
理解できないところは何度も読むようにして下さいね。
最後までお付き合いいただきありがとうございました。